2020-05-25 龟兔赛跑预测
2020-05-25 本文已影响0人
JalorOo
#include <iostream>
#include <cstdio>
using namespace std;
//于是在与乌龟的比赛中,一旦任一秒结束后兔子发现自己领先t米或以上,它们就会停下来休息s秒。对于不同的兔子,t,s的数值是不同的,但是所有的乌龟却是一致——它们不到终点决不停止。
//输入描述:
// 输入只有一行,包含用空格隔开的五个正整数v1,v2,t,s,l,其中(v1,v2<=100;t<=300;s<=10;l<=10000且为v1,v2的公倍数)
//输入样例:
//10 5 5 2 20
//5 1 5 3 20
//输出描述:
// 输出包含两行,第一行输出比赛结果——一个大写字母“T”或“R”或“D”,分别表示乌龟获胜,兔子获胜,或者两者同时到达终点。
// 第二行输出一个正整数,表示获胜者(或者双方同时)到达终点所耗费的时间(秒数)。
//输出样例:
//D
//4
struct M{
int v;
int l;
};
int main(){
int v1,v2,t,s,l;//v1兔子
scanf("%d%d%d%d%d",&v1,&v2,&t,&s,&l);
M m1;
m1.v = v1;
m1.l = 0;
M m2;
m2.v = v2;
m2.l = 0;
int count = 0;
for (int i = 1; ; i++) {
//printf("\n");
//printf("time(%d):\n",i);
if (count>0) {
count--;
//printf("r-sleep:%d ",count);
} else {
m1.l += m1.v;
}
m2.l += m2.v;
if (count==0&&m1.l>=m2.l+t) {
count = s;
}
//printf("r:%d,t:%d\n",m1.l,m2.l);
if (m2.l==l&&m1.l==l) {
printf("D\n%d",i);
return 0;
}
if (m1.l==l) {
printf("R\n%d",i);
return 0;
}
if (m2.l==l) {
printf("T\n%d",i);
return 0;
}
}
return 0;
}