7-17 爬动的蠕虫(15 分)

7-17 爬动的蠕虫(15 分)

一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?

这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。

输入格式:

输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100。

输出格式:

在一行中输出蠕虫爬出井的时间,以分钟为单位。

输入样例:

1
12 3 1

输出样例:

1
11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*假设爬行一分钟,休息一分钟*/ 
#include<stdio.h>
int main()
{
int n, u, d;//井口高度,上爬量和下滑量
int time = 0, distance = 0;//虫虫消耗的时间(分钟),距离井底的距离(寸)
scanf("%i %i %i", &n, &u, &d);
/**
* 第1分钟,爬;
* 第2分钟,滑;
* 第3分钟,爬;
* 第4分钟,滑;
* ...
* 时间为偶数,虫虫下滑;
* 时间为奇数,虫虫上爬。
*/
do {
time++;
if (time % 2 != 0)
{
distance += u;
} else
{
distance -= d;
}
} while (distance < n);

printf("%i\n", time);

return 0;
}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×