解题思路:
避坑指南:兔子休息完后,如果仍然领先乌龟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分
4 人评分
错的,兔子还是会休息
BUG写手 2021-02-21 14:35:24 |
按照还会继续休息的思维,那就是错的
BUG写手 2021-02-21 14:35:43 |
或者就是你的方法不需要考虑到这个,那就没事
BUG写手 2021-02-21 14:36:39 |
这是过了的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(); } }
BUG写手 2021-02-21 14:37:30 |
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(); } }
BUG写手 2021-02-21 14:39:47 |
//判断兔子是否可以开始休息了 if(rabbit - turtle >= t) { time = s; } 这样就不过
C语言训练-8除不尽的数 (C语言代码)暴力解法,答案只有一个,直接输出就好了浏览:1045 |
printf基础练习2 (C++代码)(受教了,,%#o和%#x的用途)三人行,必有我师,,多看题解会有收获浏览:1912 |
陶陶摘苹果 (C语言代码)浏览:1652 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:1555 |
不容易系列2 (C语言代码)浏览:641 |
多输入输出练习1 (C语言代码)浏览:1219 |
printf基础练习2 (C语言代码)浏览:955 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:368 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:616 |
三角形 (C语言代码)浏览:965 |
BUG写手 2021-02-21 14:39:21 |
发错了,无视