7-22 龟兔赛跑(20 分)

7-22 龟兔赛跑(20 分)

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

输入格式:

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

输出格式:

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

输入样例:

1
242

输出样例:

1
@_@ 726
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include<stdio.h>

int main()
{
int T, i;
int rabbitT=0; //兔子跑的时间

scanf("%d",&T);
if(T<10)
{
printf("^_^ %d\n",T*9);
return 0;
}
rabbitT=10;
for(i=10;i<=T;i++)
{
if(i%10==0) //每10分钟回头,比较
{
if(rabbitT*9>i*3 && (T-i)>=30) //兔子大于乌龟,剩余时间不小于30分钟
i=i+29; //不是i=i+30, 最后还有i++
else if(rabbitT*9>i*3 && (T-i)<30) //兔子大于乌龟,剩余时间小于30分钟
{
i=T;
break;
}
else if(T-i>=10) //兔子小于乌龟,剩余时间不小于10分钟,兔子真正跑的时间+10
{
rabbitT+=10;
i=i+9;
}
else //兔子小于乌龟,剩余时间小于10分钟, 兔子真正跑的时间+T-i
{
rabbitT+=T-i;
i=T;
break;
}
}
}
if(i*3>rabbitT*9)
printf("@_@ %d\n",i*3);
else if(i*3<rabbitT*9)
printf("^_^ %d\n",rabbitT*9);
else
printf("-_- %d\n",rabbitT*9);
return 0;
}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×