循环-18. 龟兔赛跑(20)

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

输入格式:

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

输出格式:

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

输入样例:

242

输出样例:

@_@ 726

#include <iostream>
#include <stdio.h>
#include <math.h>
#include<string>

int main(){
    int t;
	scanf("%d",&t);
	int i=0;
	int rabbit=0;
	int tortoise=0;
	int wait=30;
	int run=10;
	int mode=0; 
    while(i<t)
    {
    	i++;
    	tortoise+=3;
    	
    	
    	if(mode==0)//兔子处于跑模式 
		{
			if(run>0)
			{
			rabbit+=9;
		    run--;	
		   //printf("run %d rabbit %d tortoise %d
",run,rabbit,tortoise);
			}
			else //10分钟时间到 
			{
			  	if(rabbit>tortoise)//检测是否超越 
			  	{
			  		mode=1;//超越了就休息 
			  		wait=29;
			  		//printf("wait %d rabbit %d tortoise %d
",wait,rabbit,tortoise);
			  	}
			  	else//没超越,继续跑 
			  	{
			  		mode=0;
			  		run=9;
			  		rabbit+=9;
			    	//printf("run %d rabbit %d tortoise %d
",run,rabbit,tortoise);
			  	}
			}
		 
		 
		}else 
		{
			if(wait>0) 
			{
				wait--;//休息 
				//printf("wait %d rabbit %d tortoise %d
",wait,rabbit,tortoise);
			}
			else
			{
				mode=0;
				run=9;
				rabbit+=9;
				//printf("run %d rabbit %d tortoise %d
",run,rabbit,tortoise);
				
			}
		}		
    }
    if(rabbit>tortoise) 
    printf("^_^ %d",rabbit);
    else if(rabbit==tortoise)
    printf("-_- %d",rabbit);
    else
    printf("@_@ %d",tortoise);
    return 0;
}

  

原文地址:https://www.cnblogs.com/ligen/p/4249974.html