原题链接:蓝桥杯基础练习VIP-龟兔赛跑预测
解题思路:
避坑指南:兔子休息完后,如果仍然领先乌龟t米及以上,兔子还是会跑一次,不会继续休息的
参考代码:
import java.util.Scanner;
public class T1476 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int v1 = in.nextInt(),v2 = in.nextInt(),
t = in.nextInt(),s = in.nextInt(),l = in.nextInt();
int Sr = 0,St = 0,time = 0;
int break_time = 0;
//每循环一次,过一秒,乌龟跑v2米,但兔子如果处在休息期内,相当于受到惩罚,不允许动,
//而一旦休息期过,不管领先还是落后,不管领先超了t米还是没有,都要动一次
while(Sr < l && St < l){
time++;
St += v2;
if(break_time > 0){
break_time--;
continue;
}
Sr += v1;//休息期一过,一定动一次
if(Sr - St >= t)
break_time = s;
}
if(Sr == l && St == l)
System.out.printf("D%n%d%n",time);
else if(St == l)
System.out.printf("T%n%d%n",time);
else
System.out.printf("R%n%d%n",time);
}
in.close();
}
}0.0分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
@suda401015 //判断兔子是否可以开始休息了 if(rabbit - turtle >= t) { time = s; } 这样就不过这是过了的 public static void main(String[] args) { // TODO Auto-gener@suda401015 public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int v1 = in.nextInt(); //兔子的速度 int v2 = in.nextInt(); //乌龟的速度 int t = in.nextInt(); int s = in.nextInt(); //兔子发现自己领先t米就会休息s秒 int l = in.nextInt(); int turtle = 0; int rabbit = 0; int time = 0; //兔子停留的时间 int second = 0; while(turtle < l && rabbit < l) { //乌龟不到终点不停止 turtle += v2; //判断兔子是否还在休息状态 if(time > 0) { time--; } else { rabbit += v1; //判断兔子是否可以开始休息了 if(rabbit - turtle >= t) { time = s; } } second++; } if(turtle >= l && rabbit >= l) { System.out.println("D"); } else if(turtle >= l) { System.out.println("T"); } else { System.out.println("R"); } System.out.println(second); in.close(); } }@suda401015 这是过了的package 模拟; import java.util.Scanner; public class 龟兔赛跑预测 { /* * 话说这个世界上有各种各样的兔子和乌龟,但是 研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。 * 于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔 子和乌龟的赛跑。 * 他发现,兔子虽然跑比乌龟快,但它们有众所周知的毛病——骄傲且懒惰,于是在与乌龟的比赛中,一旦任一秒结束后 * 兔子发现自己领先t米或以 上,它们就会停下来休息s秒。对于不同的兔子,t,s的数值是不同的,但是所有的乌龟却是一致——它们不到终点决不停止。 然而有些比赛相当漫长,全程观看会耗费大量时间,而小华发现只要在每场比赛开始后记录下兔子和乌龟的数据——兔子的速 度v1(表示每秒兔子能跑v1 米),乌龟的速度v2,以及兔子对应的t,s值,以及赛道的长度l——就能预测出比赛的结果。但 是小华很懒,不想通过手工计算推测出比赛的结果,于是他找 到了你——清华大学计算机系的高才生——请求帮助,请你写一个程序, 对于输入的一场比赛的数据v1,v2,t,s,l,预测该场比赛的结果。 */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int v1 = in.nextInt(); //兔子的速度 int v2 = in.nextInt(); //乌龟的速度 int t = in.nextInt(); int s = in.nextInt(); //兔子发现自己领先t米就会休息s秒 int l = in.nextInt(); int turtle = 0; int rabbit = 0; int time = 0; //兔子停留的时间 int second = 0; while(turtle < l && rabbit < l) { //乌龟不到终点不停止 turtle += v2; //判断兔子是否还在休息状态 if(time > 0) { time--; } else { rabbit += v1; //判断兔子是否可以开始休息了 if(rabbit - turtle >= t) { time = s; } } second++; } if(turtle >= l && rabbit >= l) { System.out.println("D"); } else if(turtle >= l) { System.out.println("T"); } else { System.out.println("R"); } System.out.println(second); in.close(); } }