• 21. 子序列的和 subsequence


    题目:

    输入两个正整数 n < m < 10^6 , 输出 1 / n2 + 1 / (n + 1)2 + ...+ 1 / m2,保留5位小数。输入包含多组数据,结束标记为 n = m = 0 。提示:本题有陷阱。

    样例输入:

    2  4

    65536  655360

    0  0

    样例输出:

    Case 1: 0.42361

    Case 2: 0.00001

    思路:

    陷阱还是在于乘法溢出。若是用常规方法,将分母乘起来,然后在除,那么无论如何,都是溢出。解决方法:将分母连除两次即可。

    代码:

    #include <iostream>
    #include <iomanip>
    using namespace std;

    int main()
    {
    int n = 0, m = 0;
    int kase = 0;

    while ((cin >> n >> m) && n && m) {
    double sum = 0.0;
    for (int i = n; i <= m; ++i) {
    sum += static_cast<double >(1) / i / i;
    }

    cout << "Case " << ++kase << ": ";
    cout << setprecision(5) << fixed << sum << endl;
    }

    return 0;
    }
  • 相关阅读:
    第一次作业-编译原理概述
    文法和语言总结与梳理(作业四)
    作业三
    作业二
    编译原理概述
    编译原理 作业九
    编译原理 作业八
    编译原理 作业七
    编译原理 作业六
    编译原理 作业五
  • 原文地址:https://www.cnblogs.com/Hello-Nolan/p/12122156.html
Copyright © 2020-2023  润新知