题目: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; }