乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?
输入格式:
输入在一行中给出比赛时间T(分钟)。
输出格式:
在一行中输出比赛的结果:乌龟赢输出@_@
,兔子赢输出^_^
,平局则输出-_-
;后跟1空格,再输出胜利者跑完的距离。
输入样例:
242
输出样例:
@_@ 726
需要注意的是即使是平局,也需要跑的输出距离
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int t = 0, T, rabbit = 0, tutle = 0;
T = input.nextInt();
while (t < T) {// 对事件进行检测,根据龟兔的距离,判断时间是+10还是+30
if (rabbit <= tutle) {
if (T - t < 10) {// 时间已经不够一次正常的循环
rabbit += 9 * (T - t);
tutle += 3 * (T - t);
t = T;
}
else {
rabbit += 9 * 10;
tutle += 3 * 10;
t += 10;
}
}
else {
if (T - t < 30) {
tutle += 3 * (T - t);
t = T;
}
else {
tutle += 3 * 30;
t += 30;
}
}
}
if (rabbit == tutle)
System.out.println("-_- " + rabbit);
else if (rabbit > tutle)
System.out.println("^_^ " + rabbit);
else
System.out.println("@_@ " + tutle);
input.close();
}
}
以前写的C语言,记得码了3个小时,各种踩坑。。。。。(废物实锤)
#include <stdio.h>
const int velocity1 = 3;
const int velocity2 = 9;
int main()//726
{
int i, T, t = 0, dist1 = 0, dist2 = 0;
scanf("%d", &T);
while (getchar() != '\n')
continue;
while (t <= T)
{
i = t;
if (dist1 >= dist2)
{
if (T - t < 10)
{
dist1 += (T - t) * velocity1;
dist2 += (T - t) * velocity2;
break;
}
else
{
t += 10;
dist1 += (t - i) * velocity1;
dist2 += (t - i) * velocity2;
}
}
else
{
if (T - t < 30)
{
dist1 += (T - t) * velocity1;
break;
}
else
{
t += 30;
dist1 += (t - i) * velocity1;
}
}
}
if (dist1 > dist2)
printf("@_@ %d", dist1);
else if(dist1 < dist2)
printf("^_^ %d", dist2);
else
printf("-_- %d", dist2);
return 0;
}