当前位置:   article > 正文

蓝桥杯龟兔赛跑(Java)_请你写一个程序,对于输入的一场比赛的数据v1,v2,t,s,l,预测该场比赛的结果。java

请你写一个程序,对于输入的一场比赛的数据v1,v2,t,s,l,预测该场比赛的结果。java

一、问题概述

        话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔子和乌龟的赛跑。他发现,兔子虽然跑比乌龟快,但它们有众所周知的毛病——骄傲且懒惰,于是在与乌龟的比赛中,一旦任一秒结束后兔子发现自己领先t米或以上,它们就会停下来休息s秒。对于不同的兔子,t,s的数值是不同的,但是所有的乌龟却是一致——它们不到终点决不停止。
  然而有些比赛相当漫长,全程观看会耗费大量时间,而小华发现只要在每场比赛开始后记录下兔子和乌龟的数据——兔子的速度v1(表示每秒兔子能跑v1米),乌龟的速度v2,以及兔子对应的t,s值,以及赛道的长度l——就能预测出比赛的结果。但是小华很懒,不想通过手工计算推测出比赛的结果,于是他找到了你——清华大学计算机系的高才生——请求帮助,请你写一个程序,对于输入的一场比赛的数据v1,v2,t,s,l,预测该场比赛的结果。

输入格式

  输入只有一行,包含用空格隔开的五个正整数v1,v2,t,s,l,其中(v1,v2<=100;t<=300;s<=10;l<=10000且为v1,v2的公倍数)

输出格式

  输出包含两行,第一行输出比赛结果——一个大写字母“T”或“R”或“D”,分别表示乌龟获胜,兔子获胜,或者两者同时到达终点。
  第二行输出一个正整数,表示获胜者(或者双方同时)到达终点所耗费的时间(秒数)。

样例输入

10 5 5 2 20

样例输出

D
4

样例输入

10 5 5 1 20

样例输出

R
3

样例输入

10 5 5 3 20

样例输出

T
4

二、问题分析

        l<=10000且为v1,v2的公倍数,说明比赛时间不存在小数,故我们可以先让乌龟和兔子每次都跑一秒,然后进行比较,进而完成作答

三、代码

  1. import java.util.Scanner;
  2. public class tortoiseAndHare {
  3. public static void main(String[] args) {
  4. Scanner scanner = new Scanner(System.in);
  5. int v1 = scanner.nextInt();
  6. int v2 = scanner.nextInt();
  7. int t = scanner.nextInt();
  8. int s = scanner.nextInt();
  9. int l = scanner.nextInt();
  10. TortoiseHareRace(v1, v2, t, s, l);
  11. }
  12. /**
  13. * @param v1 兔子的速度
  14. * @param v2 乌龟的速度
  15. * @param t 兔子领先 t 米时,休息
  16. * @param s 领先 t 米时,休息 s 秒
  17. * @param l 赛道总长度
  18. */
  19. public static void TortoiseHareRace(int v1, int v2, int t, int s, int l) {
  20. char winner;//获胜者
  21. int second = 0;//比赛时间
  22. int sum1 = 0;//兔子跑的路程
  23. int sum2 = 0;//乌龟跑的路程
  24. while (sum1 < l && sum2 < l) {
  25. second++;
  26. sum1 += v1;
  27. sum2 += v2;
  28. if (sum1 == l || sum2 == l) {//每过一秒就判断是否有谁抵达终点
  29. break;
  30. }
  31. if (sum1 - sum2 >= t) {//当兔子比乌龟多跑t米时,兔子停止s秒,乌龟继续跑
  32. for (int i = 0; i < s; i++) {
  33. sum2 += v2;
  34. second++;
  35. if (sum2 == l) {//在兔子休息的期间,乌龟每走一秒就判断是否走到终点,如果到达终点则跳出内循环
  36. break;
  37. }
  38. }
  39. }
  40. }
  41. if (sum1 == l && sum2 != l) {
  42. winner = 'R';
  43. } else if (sum1 != l) {
  44. winner = 'T';
  45. } else {
  46. winner = 'D';
  47. }
  48. System.out.println(winner);
  49. System.out.println(second);
  50. }
  51. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/64362
推荐阅读
相关标签
  

闽ICP备14008679号