题目描述许多文件传输程序的一个功能是能够估计传输剩余时间。这些程序根据剩余的字节数和前几秒的传输速率来估计剩余时间。你需要编写一个程序来模拟这种行为。输入格式输入由多个数据集组成每个数据集描述一个文件传输。每个数据集的第一行是一个非负整数表示文件的大小字节数。后续行是每秒传输的字节数均为非负整数。所有传输字节的总和等于文件的大小。输入结束由文件大小为000的数据集表示该数据集不处理。输出格式每个数据集的输出应以一行开头包含数据集编号和正在传输的文件大小。然后在传输过程中每555秒输出一次估计剩余秒数的更新行。估计剩余秒数的方法确定前555秒的传输速率字节/秒如果在此期间没有传输任何字节则传输停滞stalled\texttt{stalled}stalled程序应报告此情况否则用剩余字节数除以前555秒的传输速率估算剩余秒数报告剩余秒数为整数向上取整传输结束时输出一行显示传输所需的总秒数。每个数据集输出后跟一个空行。样例输入100 10 20 20 0 10 0 10 0 10 0 20 200 60 30 100 10 50 5 5 5 5 25 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0样例输出Output for data set 1, 100 bytes: Time remaining: 4 seconds Time remaining: 5 seconds Total time: 11 seconds Output for data set 2, 200 bytes: Total time: 4 seconds Output for data set 3, 50 bytes: Time remaining: 1 seconds Time remaining: stalled Time remaining: stalled Time remaining: 0 seconds Total time: 20 seconds题目分析问题的本质这是一个模拟与计算问题。需要模拟文件传输过程每555秒根据前555秒的平均速率估算剩余时间。关键点每秒输入一个字节数可能为000每555秒输出一次估计估算公式⌈剩余字节前 5 秒字节数×5⌉\lceil \frac{\text{剩余字节}}{\text{前 5 秒字节数}} \times 5 \rceil⌈前5秒字节数剩余字节​×5⌉实际上速率是字节/秒剩余秒数 剩余字节 / 速率速率 前555秒的字节总数 /555字节/秒因此剩余秒数 剩余字节 / (前555秒字节数 / 5) 5×5 \times5×剩余字节 / 前555秒字节数向上取整边界情况如果前555秒没有传输任何字节bytesInFiveSeconds 0输出stalled传输结束时需要输出总时间如果传输正好在第555秒结束时完成是否输出估计根据样例在完成的那一秒不输出估计实际上当transfered n时立即跳出循环不会输出那个整秒的估计参考代码// 18,000 Seconds Remaining// UVa ID: 362// Verdict: Accepted// Submission Date: 2016-07-01// UVa Run Time: 0.040s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intmain(intargc,char*argv[]){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);intn,transfered,bytes,bytesInFiveSeconds,seconds,cases0;while(cinn,n){// 初始化transfered0;bytesInFiveSeconds0;seconds0;coutOutput for data set cases, n bytes:\n;// 逐秒处理while(cinbytes){seconds;transferedbytes;bytesInFiveSecondsbytes;// 每 5 秒输出一次估计if(seconds%50){cout Time remaining: ;if(bytesInFiveSeconds0)coutstalled\n;else{// 向上取整(a b - 1) / bintremaining(5*(n-transfered)bytesInFiveSeconds-1)/bytesInFiveSeconds;coutremaining seconds\n;}bytesInFiveSeconds0;// 重置计数器}// 传输完成退出循环if(transferedn)break;}// 输出总时间coutTotal time: seconds seconds\n;coutendl;// 数据集间空行}return0;}