问题描述:
一条虫子在n英寸深的井底,每次一分钟爬行u英寸,但是它再次爬行前必须先休息1分钟,在休息过程中它将滑落d英寸,在反复向上爬行和休息后,多长时间虫子能爬出这口井?在此过程中,分钟的小数部分向上取整,如果攀爬结束时虫子正好到达井口的顶部,则视为虫子已经爬出。假定d<u,n<100,当n=0时输入结束。
输入形式:
输入包括多个测试用例。每行包含3个整数n,u,d,为上面所提到的值。
输出形式:
每个测试用例输入一行,表示虫子爬出井的时间。
样例输入:
10 2 1
20 3 1
0 0 0
样例输出:
17
19
思路:直接暴力,while(1)控制多组数据输入,遇到n=0结束;time为每爬或者落一次时间为1min,先爬然后time++,然后判断是否爬出去了,若没爬出去,再落time++,直到爬出去为止。
#include <iostream>
#include <stdio.h>
using namespace std;int main()
{int n,u,d,time=0,s=0;while(1){scanf("%d%d%d",&n,&u,&d);if(n==0)break;else{s=0;time=0;while(s!=n){s+=u;time++;if(s>=n)break;time++;s-=d;}}printf("%d\n",time);}return 0;
}