请问这里的(U-D)*n+U<N和2*n+1表示什么?
题目:爬动的蠕虫
【问题描述】
一只 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 是什么意思,表示什么
谢谢各位大神! 很急,21:30 之前希望有人能帮我解答
@人造人 @Twilight6 @疾风怪盗 (U-D)*n+U<N
(U - D) * n + U < N
((U - D) * n + U) < N
人造人 发表于 2021-11-5 20:38
(U-D)*n+U
这个表达式表示什么?麻烦用语言回答一下。 本帖最后由 jhq999 于 2021-11-5 20:47 编辑
(U-D)*n+U//爬U滑D 所以(U-D)是一次爬和滑的有效移动距离,*n你就知道什么意思了吧?后面再加U是因为最后一次不用休息。
2*n+1//爬一分钟休息一分钟所以是2×爬滑的次数n等于爬滑的总时间,加上1是最后一次爬出来的时间
占以前听说过这个脑筋急转弯的便宜,重点在于最后一次不用休息。 (U-D)*n+U<N
U : 爬虫每分钟上爬的英寸数
D:休息一分钟后下滑的英寸数
n:已经向上爬的次数
N :井的深度
(U-D) * n 是已经上爬的高度,而(U-D) * n + U 是本次上爬所能达到的最大高度,(U-D)*n+U<N 这是在判断本次上爬是否可以到达井口。
2*n+1
n 是在到达井口前,爬虫已经上爬的次数,每次用时 2 分钟,而最后一次爬到井口时,用时 1 分钟,所以,这个表达式表达的是爬虫爬到井口所需要的分钟数。 jackz007 发表于 2021-11-5 20:48
U : 爬虫每分钟上爬的英寸数
D:休息一分钟后下滑的英寸数
n:已经向上爬的次数
对不起,来早了
页:
[1]