|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:
爬动的蠕虫
【问题描述】
一只 1英寸长的蠕虫在一口深为n英寸井的底部。每分钟蠕虫可以向上爬u英寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了d英寸。上爬和下滑重复进行。蠕虫需要多长时间才能爬出井?不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。
【输入】
输入文件包括多个测试数据。每个测试数据占一行,为3个正整数n,u,d,其中n是井的深度,u是蠕虫每分钟上爬的距离,d是蠕虫在休息的过程中下滑的距离。假定d<u, n<100。 n=0表示输入数据结束。
【输出】
对输入文件中的每个测试数据,输出一个整数,表示蠕虫爬出井所需要的时间(分钟)。
【样例输入】
1021
2031
000
【样例输出】
17
19
代码:
- #include<iostream>
- using namespace std;
- int main()
- {
- int N,U,D;
- int n=0;
-
- while(true)
- {
- cin>>N>>U>>D;
- if(N==0&&U==0&&D==0)
- {
- break;
- }
- n=0;
- while((U-D)*n+U<N)
- {
- n++;
- }
- cout<<2*n+1<<endl;
- }
-
- return 0;
- }
复制代码
我想问 (U-D)*n+U<N 和 2*n+1 是什么意思,表示什么
谢谢各位大神!
本帖最后由 jhq999 于 2021-11-5 20:47 编辑
(U-D)*n+U//爬U滑D 所以(U-D)是一次爬和滑的有效移动距离,*n你就知道什么意思了吧?后面再加U是因为最后一次不用休息。
2*n+1//爬一分钟休息一分钟所以是2×爬滑的次数n等于爬滑的总时间,加上1是最后一次爬出来的时间
|
|