7-22 龟兔赛跑 (20 分)

该博客详细分析了乌龟与兔子赛跑的经典问题,揭示了每90分钟为一个周期的运动规律,并给出了特定时间点两者的位置关系。博主通过列表找规律,特别指出在45分钟时两者路程相等的关键点,并提供了C语言的代码实现,以判断不同时间点的比赛结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

输入格式:

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

输出格式:

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

输入样例:

242

结尾无空行

输出样例:

@_@ 726

结尾无空行

要点分析

1.乌龟在整个过程中是以3米每秒的速度持续运动的;

2.兔子首先以9米每秒的速度运动10分钟,若此时在乌龟之后,则继续10分钟;若在前,则休息30分钟后继续这一循环;

3.要重点关注兔子的运动规律。

列表找规律

0min龟(0m)兔(0m)
10min30m90m兔快(兔>龟,兔停)
20min60m90m兔快

30min

90m90m相等
40min120m90m龟快兔开始跑)
45min135m135m相等
50min150m180m兔快(兔>龟,兔停)
60min180m180m相等
70min210m180m龟快
80min240m180m龟快(兔开始跑)
90min270m270m相等
100min300m360m兔快(兔>龟,兔停)
110min330m360m兔快
120min360m360m相等
130min390m360m龟快兔开始跑)
135min405m405m相等
140min420m450m兔快(兔>龟,兔停)

规律

1.每90分钟为一个周期;

2.特别的,在45分钟的时候,乌龟与兔子路程相等,这可能也是大家在找规律的时候较为容易遗漏的一点;

3.在这里再重点强调一个我在打代码的时候忽略的一个东西,就是在0到10分钟之内,兔子的路程是动态的,那个时候兔子还在跑;

4.接下来就是利用代码将表格给呈现出来,利用if-else if来实现。

代码如下

​
#include<stdio.h>
int main()
{
    int T;
    int m;
    scanf("%d",&T);
    if(T%90==0)
    {
        m=(T/90)*270;
        printf("-_- %d",m);
    }
    else
    {
        if(T%90<=10)
        {
            m=(T/90)*270+(T%90)*9;
            printf("^_^ %d",m);
        }
        else if(T%90>10&&T%90<30)
        {
            m=(T/90)*270+90;
            printf("^_^ %d",m);
        }
        else if(T%90==30)
        {
            m=(T/90)*270+90;
            printf("-_- %d",m);
        }
        else if(T%90>30&&T%90<45)
        {
            m=(T/90)*270+3*(T%90);
            printf("@_@ %d",m);
        }
        else if(T%90==45)
        {
            m=(T/90)*270+135;
            printf("-_- %d",m);
        }
        else if(T%90>45&&T%90<=50)
        {
            m=(T/90)*270+90+(T%90-45)*9;
            printf("^_^ %d",m);
        }
        else if(T%90>50&&T%90<60)
        {
            m=(T/90)*270+180;
            printf("^_^ %d",m);
        }
         else if(T%90==60)
        {
            m=(T/90)*270+180;
            printf("-_- %d",m);
        }
        else if(T%90>60&&T%90<90)
        {
            m=(T/90)*270+(T%90)*3;
            printf("@_@ %d",m);
        }
    }
    return 0;
}

​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值