描述
一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?(不足一分钟按一分钟计)
这里给出多个测试数据,每个数据占一行。输入在一行中顺序给出3个正整数N(井深)、U(在镜中每分钟向上爬的距离)、D(休息时滑下的距离),假定D<U,N不超过100。
样例输入
10 2 1
20 3 1
0 0 0
样例输出
17
19
这道题真的是一道经典的模拟,首先我们要记住S=vt,然后我们可以画图去解决这个问题。首先我们要先用while输入,然后我的办法是建立一个函数,然后设立个s = 0(爬行距离),time = 0.由于它爬一分钟就休息一分钟,所以我们要先建立个for循环 for(int i = 0;s <= n;i ++),这里条件用距离比较就行了,这里的i相当于时间表示。
话不多说,直接上代码
#include <iostream>
using namespace std;
int idx = 0,q,w,e;
void ss(int n,int m,int k);
int main(){
while(cin >> q >> w >> e && q != 0){
ss(q,w,e);
}
return 0;
}
void ss(int n,int m,int k){
int s = 0;
int time = 0;
for (int i = 0; s < n;i ++){
if ((i % 2) == 1){
s -= k;
time ++;
}
else if ((i % 2) == 0){
time ++;
s += m;
}
}
cout << time << endl;
return ;
}