题目:Race
来源:哈尔滨理工大学软件与微电子学院程序设计竞赛(同步赛)
解题思路
小明的跑步速度为 V1(m/s),小红的跑步速度为 V2(m/s),小明虽然跑得比较快,但是他在任一时刻领先 T 米或以上,他就会停下来休息S 秒。赛道的长度为 L(米),请预测小红和小明谁会赢。
在时间 t 时,小明和小红分别跑了 r1 和 r2。
如果 r1 - r2 > T,那么小明停 S 秒,小红继续跑;否则两人都跑。
一旦 r1 或 r2 大于等于 L,则跳出循环判断结果。
C++代码
#include<iostream>
using namespace std;
int main(){
int V1, V2, T, S, L;
cin >> V1 >> V2 >> T >> S >> L;
int r1 = 0, r2 = 0;
int t = 0;
while(r1 < L && r2 < L){
while(r1 < L && r2 < L && r1 - r2 < T){
++t;
r1 += V1;
r2 += V2;
}
if(r1 >= L || r2 >= L)
break;
for(int i=1; i<=S; ++i){
++t;
r2 += V2;
if(r2 >= L)
break;
}
}
if(r1 >= L && r2 >= L)
cout << "Tie " << t << endl;
else if(r1 >= L)
cout << "Ming " << t << endl;
else
cout << "Hong " << t << endl;
return 0;
}
京公网安备 11010502036488号