這是一道極簡單的模擬題,也可以用數學公式直接計算。
蠕虫在深 n 寸的井底。每分鐘向上爬 u 寸,然後休息 1 分鐘滑落 d 寸(d < u)。問幾分鐘能爬出井口。部分分鐘算整分鐘;剛好爬到頂端算成功。
int main() {
int n, u, d;
while (cin >> n >> u >> d, n||u||d) {
int time = 0, height = 0;
while (height < n) {
height += u; time++;
if (height >= n) break;
height -= d; time++;
}
cout << time << endl;
}
return 0;
}
每 2 分鐘淨上升 u - d。最後一次爬升不滑落。
if (n <= u) ans = 1;
else {
int cycles = (n - u + u - d - 1) / (u - d); // 向上取整
ans = cycles * 2 + 1;
}