7-22 龟兔赛跑 (20 分)

题目链接

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

输入格式:

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

输出格式:

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

输入样例:

242

输出样例:

@_@ 726

 

 1 #include<algorithm>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<cmath>
 6 using namespace std;
 7 int main(){
 8     int t,rabbit_sum,tortoise_sum;
 9     scanf("%d",&t);
10     rabbit_sum = 0,tortoise_sum = 0;
11     for(int i = 1;i <= t;i++){
12         rabbit_sum += 9;
13         tortoise_sum += 3;
14         if(i % 10 == 0){
15             if(rabbit_sum > tortoise_sum){
16                 if(i + 30 <= t){//判断往后走30分钟是否会超出规定的时间!!
17                     tortoise_sum += 90;
18                     i += 30;
19                 }
20                 else{
21                     tortoise_sum += 3 * (t - i);
22                     i += (t - i);
23                 }
24             }
25             else{
26                 if(i + 10 <= t){
27                     rabbit_sum += 90;
28                     tortoise_sum += 30;
29                     i += 10;
30                 }
31                 else{
32                     rabbit_sum += 9 * (t - i);
33                     tortoise_sum += 3 * (t - i);
34                     i += (t - i);
35                 }
36             }
37         }
38     }
39     if(rabbit_sum > tortoise_sum){
40         printf("^_^ %d\n",rabbit_sum);
41     }
42     else if(rabbit_sum < tortoise_sum){
43         printf("@_@ %d\n",tortoise_sum);
44     }
45     else{//平局也要输出距离
46         printf("-_- %d\n",tortoise_sum);
47     }
48     return 0;
49 }
View Code

 

posted @ 2018-12-03 15:06  永不&言弃  阅读(1095)  评论(0编辑  收藏  举报