[PTA]7-22 龟兔赛跑
Posted Spring-_-Bear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PTA]7-22 龟兔赛跑相关的知识,希望对你有一定的参考价值。
乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?
输入格式:
输入在一行中给出比赛时间T(分钟)。
输出格式:
在一行中输出比赛的结果:乌龟赢输出@_@,兔子赢输出^_^,平局则输出-_-;后跟1空格,再输出胜利者跑完的距离。
输入样例:
242
输出样例:
@_@ 726
- 思路:
时间 | 兔子 | 乌龟 |
---|---|---|
10 | 90 | 30 |
30 | 90 | 90 |
40 | 90 | 120 |
45 | 135 | 135 |
50 | 180 | 150 |
60 | 180 | 180 |
80 | 180 | 240 |
90 | 270 | 270 |
通过观察时间-路程表不能得出如下结论:
在(0,30)和(45,60)时间段内,兔子胜;
在边界处即0,30,45,60时刻时兔子和乌龟平局;
其余时刻乌龟胜;
且90分钟为一个轮回,即距离乌龟和兔子都跑完270米后进入下一个轮回。
- 提交结果:
- 源码:
#include<stdio.h>
int main()
{
int T, turnaround; // 时间T;轮回次数
int dis_T, dis_R; // 乌龟、兔子跑过的距离
scanf("%d", &T);
turnaround = T / 90;
T %= 90;
/* (0,30)或(45,60)时间段内兔子胜 */
if (T > 0 && T < 30 || T > 45 && T < 60)
{
if (T <= 10)
{
dis_R = T * 9;
}
else if (T < 30)
{
dis_R = 90;
}
else if (T < 50)
{
dis_R = 90 + (T - 40) * 9;
}
else
{
dis_R = 180;
}
/* 兔子跑过的总距离 */
dis_R += turnaround * 270;
printf("^_^ %d\\n", dis_R);
}
else if (T == 0 || T == 30 || T == 45 || T == 60) // 平局
{
dis_T = T * 3;
dis_T += turnaround * 270;
printf("-_- %d\\n", dis_T);
}
else // 乌龟胜
{
dis_T = T * 3;
dis_T += turnaround * 270;
printf("@_@ %d\\n", dis_T);
}
return 0;
}
以上是关于[PTA]7-22 龟兔赛跑的主要内容,如果未能解决你的问题,请参考以下文章