编程题 7-22 龟兔赛跑【PAT】
文章目录
- 题目
- 输入格式
- 输出格式
- 输入样例
- 输出样例
- 题解
- 解题思路
- 完整代码
编程练习题目集目录
题目
乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进 3 3 3 米,兔子每分钟前进 9 9 9 米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑 10 10 10 分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息 30 30 30 分钟,否则继续跑 10 10 10 分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?
输入格式
输入在一行中给出比赛时间 T T T(分钟)。
输出格式
在一行中输出比赛的结果:乌龟赢输出 @_@
,兔子赢输出 ^_^
,平局则输出 -_-
;后跟 1 1 1 空格,再输出胜利者跑完的距离。
输入样例
242
输出样例
@_@ 726
题解
解题思路
首先输入总时间,然后开始 f o r for for 循环,根据题意判断,乌龟一直在跑,每分钟跑 3 3 3 米,兔子每到十的倍数就判断一次,如果它超过乌龟就停 30 30 30 分钟(在 f o r for for 循环中自减 30 30 30 次),否则就往前跑,直到下一个十的倍数再判断,当时间到总时间时就判断兔子和乌龟的路程,按照要求输出即可。
完整代码
#include<iostream>
using namespace std;int main(void)
{int T, x = 0, y = 0, rest = 0;cout << "请输入比赛时间:"; // 提交时注释此行cin >> T;for (int t = 0; t < T; t++){x += 3;if (t % 10 == 0 && rest == 0 && y > x) // 当时间满足 10 的倍数并且兔子走的路程超过龟时就让兔子休息三十分钟rest = 30;if (rest == 0)y += 9;elserest--;}if (x > y) // 乌龟赢cout << "@_@ " << x << endl;else if (x < y) // 兔子赢cout << "^_^ " << y << endl;elsecout << "-_- " << y << endl;return 0;
}