题目
输入观看视频的播放速度,缓冲速度,播放前等待时间和视频总时长,当播放到还未被缓存的地方,将从头开始播放(真烦人。。)题目链接
思路
输入输出样例画出两条直线的函数图就很清晰了
代码
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int cs; cin >> cs;
for(int T=1; T<=cs;T++){
bool flag=1;
float pl, dl, wt, s,t=0;
cin >> pl >> dl >> wt >> s;
float x,y,x0=wt;
if(pl<=dl){ //播放速度比缓存速度慢
cout << "Case #"<< T <<": "<< fixed<<setprecision(3)<<s/pl;
if(T<cs) cout << "\n";
continue;
}
while(flag){
x = pl*x0/(pl-dl); //播放与缓存相交的地方
y = x*dl;
if(y>=s) {
flag=0;
t+=s/pl;
}
else {
x0 = x; t = x-wt;
}
}
if(!flag) cout << "Case #"<<T<<": "<< fixed<< setprecision(3)<<t;
if(T<cs) cout << "\n";
}
return 0;
}
结果输出
网友评论