1 条题解

  • 0
    @ 2010-3-26 3:53:42

    【深基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

    信息

    ID
    67
    时间
    1000ms
    内存
    125MiB
    难度
    进阶
    标签
    递交数
    1
    已通过
    1
    上传者