[PTA]7-22 龟兔赛跑(20分)
C语言的龟兔赛跑问题,用的办法比较笨,逻辑应该还算清晰。
#include <stdio.h>
int main()
{
int RabbitDistance,T,time=0;//time在这里计数,以10位单位,每10分钟检查一次龟兔的距离。
scanf("%d",&T);
if(T <= 10){
printf("^_^ %d",9*T);//输入T小于10的情况,兔子直接赢,跑过距离T*9
}else{
RabbitDistance=90,time=10;
while(time <= T-30){
if(RabbitDistance > 3*time){
time+=30;
}else{
RabbitDistance+=90;
time+=10;
}
}//t从0开始,每过10分钟判定一次距离长短,兔子大于乌龟,则t+30(休息三十分钟),否则t+10,兔子在10分钟内跑90,循环在t<=T-30内进行。
if((T-time)>=0 && (T-time)<10){
if(RabbitDistance<=3*time){
RabbitDistance+=(T-time)*9;
}
}else if((T-time)>=10 && (T-time)<20){
if(RabbitDistance <= 3*time){
RabbitDistance += 90;
time += 10;
if(RabbitDistance <= 3*time){
RabbitDistance += (T-time)*9;
}
}
}else if((T-time)>=20 && (T-time)<30){
if(RabbitDistance <= 3*time){
RabbitDistance+=90;
time+=10;
if(RabbitDistance <= 3*time){
RabbitDistance+=90;
time+=10;
}
}//这里三个if主要是判别T-t<30的三种情况,最终计算出兔子跑的距离。
}
if(RabbitDistance > 3*T){
printf("^_^ %d",RabbitDistance);
}else if(RabbitDistance == 3*T){
printf("-_- %d",3*T);
}else{
printf("@_@ %d",3*T);
}//无论兔子跑的距离是哪种情况,乌龟的距离始终是T*3。
}
return 0;
}
后续会改进。