嘉岳呀 发表于 2021-11-5 20:17:29

请问这里的(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 是什么意思,表示什么

谢谢各位大神!

嘉岳呀 发表于 2021-11-5 20:24:07

很急,21:30 之前希望有人能帮我解答

@人造人 @Twilight6

嘉岳呀 发表于 2021-11-5 20:26:59

@疾风怪盗

人造人 发表于 2021-11-5 20:38:56

(U-D)*n+U<N
(U - D) * n + U < N
((U - D) * n + U) < N

嘉岳呀 发表于 2021-11-5 20:42:09

人造人 发表于 2021-11-5 20:38
(U-D)*n+U

这个表达式表示什么?麻烦用语言回答一下。

jhq999 发表于 2021-11-5 20:45:58

本帖最后由 jhq999 于 2021-11-5 20:47 编辑

(U-D)*n+U//爬U滑D 所以(U-D)是一次爬和滑的有效移动距离,*n你就知道什么意思了吧?后面再加U是因为最后一次不用休息。
2*n+1//爬一分钟休息一分钟所以是2×爬滑的次数n等于爬滑的总时间,加上1是最后一次爬出来的时间

jhq999 发表于 2021-11-5 20:48:22

占以前听说过这个脑筋急转弯的便宜,重点在于最后一次不用休息。

jackz007 发表于 2021-11-5 20:48:35

      (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 分钟,所以,这个表达式表达的是爬虫爬到井口所需要的分钟数。

嘉岳呀 发表于 2021-11-5 21:05:00

jackz007 发表于 2021-11-5 20:48
U : 爬虫每分钟上爬的英寸数
D:休息一分钟后下滑的英寸数
n:已经向上爬的次数


对不起,来早了
页: [1]
查看完整版本: 请问这里的(U-D)*n+U<N和2*n+1表示什么?