蓝桥杯 BASIC-24 VIP试题 龟兔赛跑预测
试题 基础练习 龟兔赛跑预测
然而有些比赛相当漫长,全程观看会耗费大量时间,而小华发现只要在每场比赛开始后记录下兔子和乌龟的数据——兔子的速度v1(表示每秒兔子能跑v1米),乌龟的速度v2,以及兔子对应的t,s值,以及赛道的长度l——就能预测出比赛的结果。但是小华很懒,不想通过手工计算推测出比赛的结果,于是他找到了你——清华大学计算机系的高才生——请求帮助,请你写一个程序,对于输入的一场比赛的数据v1,v2,t,s,l,预测该场比赛的结果。
第二行输出一个正整数,表示获胜者(或者双方同时)到达终点所耗费的时间(秒数)。
4
3
4
题目中有至关重要的一句话——l为v1,v2的公倍数,这一句话将此题的难度下降了许多。由此句我们可以得知乌龟兔子某一方(或双方)到达终点时的时间必定是正整数,我们只需要以一秒为一个单位来计算便可解出此题。
代码如下--
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 录入数据
int v1 = sc.nextInt();
int v2 = sc.nextInt();
int t = sc.nextInt();
int s = sc.nextInt();
int l = sc.nextInt();
int s1 = 0, s2 = 0;// 分别表示兔子\乌龟距离起点的距离
int time = 0;
while (s1 < l && s2 < l) {
if (s1 - s2 >= t) {// 兔子休息
for (int i = 0; i < s; i++) {
s2 += v2;
time++;
if (s2 == l)// 乌龟到达终点
break;
}
} else {// 兔子不休息
s1 += v1;
s2 += v2;
time++;
}
}
if (s1 == l && s2 < l)
System.out.println("R");
else if (s1 < l && s2 == l)
System.out.println("T");
else
System.out.println("D");
System.out.println(time);
}
}
演示效果如下--
希望对大家有所帮助!
谢谢大家!
- 点赞
- 收藏
- 关注作者
评论(0)