解题思路:
分析条件。
一旦其中一个到达终点,即所走路程大于等于l时,退出循环。时间只记录比赛时间。
分两种情况:
兔子休息。只有乌龟在跑,在s秒内,循环执行,{sum2+=v2,比赛时间加一}。
兔子不休息。乌龟和兔子路程都在增加。{sum1+=v1;sum2+=v2;}
注意事项:
1,特殊讨论:
可能当兔子休息时乌龟到达终点,所以追加条件判断乌龟是否到达终点。(我一开始写的时候没有考虑到,调试了几次才想起来)
2,结果输出讨论:
要先考虑同时到达,否则可能出现同时满足两个条件语句,两次输出。
参考代码:
#include<iostream>
using namespace std;
int main(){
int v1, v2, t, s, l;
cin >> v1 >> v2 >> t >> s >> l;
int c = 0; //比赛计时器
int sum1=0, sum2=0; //1 兔子,2 乌龟
while (sum2 < l && sum1<l) {
if (sum1 - sum2 >= t) {
int m = s;
while (m) {
sum2 += v2;
c++;
m--; //兔子休息倒计时
if (sum2 >= l) break; //讨论兔子休息时乌龟是否到达终点
}
}
else {
sum1 += v1;
sum2 += v2;
c++;
}
}
if (sum2 >= l&&sum1>=l) { //必须先判断同时到达终点
cout << "D" << endl;
}
else if (sum1 >= l) {
cout << "R" << endl;
}
else {
cout<<"T"<<endl;
}
cout << c;
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复