2018大华软件大赛模拟赛第2题 (网络上有一台流媒体服务器S和一台客户端C,S向C发送流媒体数据。)
题目: 网络上有一台流媒体服务器S和一台客户端C,S向C发送流媒体数据。
1、S的发送速率为M;
2、C有一个缓冲区B,最大值大小为X,B接收来自S的流媒体,C处理B中的数据并清理,B的处理速度为N。
3、为保证C处理的效率,当缓冲区大小超过80%时,C发送停止命令给S,S将停止向C发送数据。
4、当缓冲区大小小于60%时,C向S发送重启发送数据命令,S向C发送数据。
5、题中所有单位都是基本单位。
请设计一个函数handle_data_func,用来处理缓冲区B,并计算C第一次向S发送重启发送数据命令的时间T0及每次发送重启命令的的时间间隔T1。
注意:输出默认保留两位小数
输入:
输入的第一行指定用例数量T;
用例的第二行输入速率M、N;
用例的第三行输入缓冲区大小X;
输出:
客户端C第一次向服务端S发送重启发送数据命令的时间及时间间隔。
int handle_data_func(int M,int N,int X,int &T1)
input:
1
2 1
10
output:
10.00
4.00
本代码需要用g++ 编译
1 #include <cstdio> 2 3 double handle_data_func(double M,double N,double X,double &T1) 4 { 5 double v = M -N; 6 double t1 = 0.0, t2 = 0.0; 7 t1 = (0.8 * X) / v; 8 t2 = (0.2 * X) / N; 9 10 double T0 = t1 + t2; 11 12 t1 = (0.2 * X) / v; 13 14 T1= t1 + t2; 15 return T0; 16 17 } 18 19 int main() 20 { 21 int i; 22 scanf("%d",&i); 23 double m, n, x; 24 double T0,T1; 25 while(i--) 26 { 27 scanf("%lf%lf",&m,&n); 28 scanf("%lf",&x); 29 T0 =handle_data_func(m, n, x,T1 ); 30 printf("%.2f\n",T0); 31 printf("%.2f\n",T1); 32 33 } 34 return 0; 35 }