编程题 7-22 龟兔赛跑【PAT】

文章目录

编程练习题目集目录

题目

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

输入格式

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

输出格式

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

输入样例

242

输出样例

@_@ 726

题解

解题思路

首先输入总时间,然后开始 f o r for 循环,根据题意判断,乌龟一直在跑,每分钟跑 3 3 米,兔子每到十的倍数就判断一次,如果它超过乌龟就停 30 30 分钟(在 f o r for 循环中自减 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; }
本文是转载文章,点击查看原文
如有侵权,请联系 lx@jishuguiji.net 删除。