问题描述:
一条虫子在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;
}
|