题目
乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进 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;
else
rest--;
}
if (x > y) // 乌龟赢
cout << "@_@ " << x << endl;
else if (x < y) // 兔子赢
cout << "^_^ " << y << endl;
else
cout << "-_- " << y << endl;
return 0;
}