問題描述:
一條蟲子在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;
}