PTA 5-22龟兔赛跑

来源:互联网 发布:雪白血红 张正隆知乎 编辑:程序博客网 时间:2024/06/05 06:50

乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?

输入格式:

输入在一行中给出比赛时间T(分钟)。

输出格式:

在一行中输出比赛的结果:乌龟赢输出@_@,兔子赢输出^_^,平局则输出-_-;后跟1空格,再输出胜利者跑完的距离。

输入样例:

242

输出样例:

 @_@ 726

方法一:笨一点的:很容易找到规律,以90为一个周期,对周期里面的tortoise胜 ,rabbit 胜,平局进行分情况。
0<t%90<30  45<t%90<60 这两个区间为兔子胜利
30<=t%90<45 60<t%90<90 为乌龟胜利
t%90==30||t%90==45||t%90==60||t%90==0||t==0平局
#include <iostream>using namespace std;int main(){        int t;    int distance=0;    cin>>t;    if((t%90<60&&t%90>45)||(t%90>0&&t%90<30))    {        cout<<"^_^"<<" ";        if(t%90>0&&t%90<=10)            distance=(t/90)*270+(t%90)*9;        else if(t%90>10&&t%90<30)            distance=(t/90)*270+10*9;        else if(t%90>=45&&t%90<=50)            distance=(t/90)*270+10*9+(t%90-40)*9;        else if(t%90>50&&t%90<60)            distance=(t/90)*270+10*9*2;        cout<<distance;    }    else if(t%90==60||t%90==0||t==0||t%90==30||t%90==45)        cout<<"-_-"<<" "<<t*3;    else        cout<<"@_@"<<" "<<t*3;    return 0;}

方法二:利用循环,从0-t时间内主要是构造兔子的距离,代码如下
#include <iostream>using namespace std;int main(){    int t;    cin>>t;    int tortoise=0,rabbit=0;    int flag=0;    for(int i=0;i<t;i++)    {        if(i%10==0&&rabbit>tortoise&&flag==0)//rabbit 的休息的情况            flag=30;        if(flag==0)            rabbit+=9;        else//rabbit 的休息            flag--;        tortoise+=3;    }    if(rabbit>tortoise)        cout<<"^_^ "<<rabbit;    else if(rabbit==tortoise)        cout<<"-_- "<<rabbit;    else        cout<<"@_@ "<<tortoise;    return 0;}



0 0