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;
}

上一篇下一篇

猜你喜欢

热点阅读