7-17 爬動的蠕蟲(15 分)
阿新 • • 發佈:2019-01-30
一條蠕蟲長1寸,在一口深為N寸的井的底部。已知蠕蟲每1分鐘可以向上爬U寸,但必須休息1分鐘才能接著往上爬。在休息的過程中,蠕蟲又下滑了D寸。就這樣,上爬和下滑重複進行。請問,蠕蟲需要多長時間才能爬出井?
這裡要求不足1分鐘按1分鐘計,並且假定只要在某次上爬過程中蠕蟲的頭部到達了井的頂部,那麼蠕蟲就完成任務了。初始時,蠕蟲是趴在井底的(即高度為0)。
樣例:
輸入 12 3 1
輸出 11
----------------------------------
/* 井深N寸,一分鐘爬U寸,歇一分鐘下落D寸, winner =0 沒有爬上去,winner =1,爬上去了 一開始在井底,高度H為0;TIME=0 第一分鐘,TIME++,H=H+U,如果H>=N,winner=1;else,H=H-D,TIME++; 12 3 1-11 */ #include <stdio.h> int main() { int N,U,D; scanf("%d %d %d",&N,&U,&D); int H=0; int time=0; int winner=0; while(winner!=1) { H+=U; time++; if(H>=N) { winner=1; } else { H=H-D; time++; } } printf("%d",time); return 0; }
我被MOOC平臺中翁愷的C語言視訊影響的比較深,所以引用了winner來控制迴圈退出,但實際上不必這麼麻煩,在檢視CSDN各位大神的程式碼後,我稍微修改,如下
#include <stdio.h> int main() { int N,U,D; scanf("%d %d %d",&N,&U,&D); int H=0; int time=0; while(1) { H+=U; time++; if(H>=N) { break; } else { H=H-D; time++; } } printf("%d",time); return 0; }