1 条题解

  • 0
    @ 2021-6-30 8:46:04

    【例27.2】 最小n值

    解题思路

    从空和开始逐个加入 1/i,只要当前和仍小于 m 就继续。第一次达到或超过 m 时的项数即答案。每项为正,部分和严格递增,故首次满足必然最小。

    正确性说明

    按上述推导执行:每次仅处理当前输入或当前步骤,并把它对答案的贡献计入对应状态。所有需要处理的情况均被覆盖,结束时保存的量就是题目所求。

    易错点

    要求 >=m,不是 >m;分子用 1.0。

    复杂度

    设答案为 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 m;
        cin >> m;
        double sum = 0;
        int n = 0;
        while (sum < m) {
            n++;
            sum += 1.0 / n;
        }
        cout << n << "\n";
        return 0;
    }
    
    • 1

    信息

    ID
    186
    时间
    1000ms
    内存
    64MiB
    难度
    入门
    标签
    递交数
    0
    已通过
    0
    上传者