一只小虫,虫在井底,井有 n 英寸深。它有足够的能量每分钟爬上 u 英寸,但在再次爬上之前,必须休息一分钟。在休息的过程中,它下滑了 d 英寸。攀爬和休息的过程会重复。虫子多久才能爬出井外?我们总是把一分钟的一部分算作整整一分钟,如果蠕虫在爬行结束时刚刚到达井顶,我们就认为蠕虫爬出了井。
Input
将会有多个问题实例,每一行将包含 3 个正整数 n、u 和 d。它们给出了上段中提到的数值。此外,你可以假设 d < u,n < 100。n = 0 表示输出结束。
Output
每个输入实例都应该在一行上生成一个整数,表示虫子爬出井口所需的分钟数。
Sample Input
10 2 1
20 3 1
0 0 0
Sample Output
17
19
#include <iostream>
using namespace std;
int main()
{
int n, u, d;
while (cin >> n >> u >> d)
{
if (n == 0)
break;
int S = 0;
int time = 0;
while (S < n)
{
S += u;
++time;
if (S >= n)
break;
S -= d;
++time;
}
cout << time << endl;
}
return 0;
}

这篇文章探讨了一只小虫如何通过有限的爬行速度和休息滑落来计算从井底到井口所需的时间,涉及爬升、休息与下滑的动态过程。
939

被折叠的 条评论
为什么被折叠?



