1 条题解
-
0
【深基4.习2】小玉在游泳
解题思路
维护已游总距离与下一步距离,初始为 0 和 2。总距离未达到 s 时再游一步,之后步长乘 0.98。
正确性说明
第 k 步的距离按递推等于上一部的 98%,循环精确模拟游泳过程,首次达到目标的步数就是最少步数。
易错点
目标为 0 时不需要游,输出 0;不要把 98% 写成整数除法。
复杂度
设答案为 k,时间 O(k),空间 O(1)。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); double s; cin >> s; double sum = 0, step = 2; int k = 0; while (sum < s) { sum += step; step *= 0.98; k++; } cout << k << "\n"; return 0; }
- 1