编程题 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;
        else
            rest--;
    }
    if (x > y)							// 乌龟赢
        cout << "@_@ " << x << endl;
    else if (x < y)						// 兔子赢
        cout << "^_^ " << y << endl;
    else
        cout << "-_- " << y << endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41918107/article/details/143138606