栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

子序列的求和--算法竞赛经典习题2-4:输入两个正整数n<m<10^6,输出1/n^2+1/(n+1)^2+...+1/m^2,保留5位小数。输入包含多组数据,结束标记为n=m=0。(C++实现)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

子序列的求和--算法竞赛经典习题2-4:输入两个正整数n<m<10^6,输出1/n^2+1/(n+1)^2+...+1/m^2,保留5位小数。输入包含多组数据,结束标记为n=m=0。(C++实现)

子序列的求和–算法竞赛经典习题2-4:输入两个正整数n<m<106,输出1/n2+1/(n+1)2+…+1/m2,保留5位小数。输入包含多组数据,结束标记为n=m=0。(C++实现)
样例输入:

2 4
65536 655360
0 0

样例输出:

Case 1: 0.42361
Case 2: 0.00001

思路:
本题较为求和Sum问题多来一些步骤与判断,稍微复杂一点点。
1.先判定结束标记问题,n=m=0,做while判读即可。
2.对求和实现累加,与Sum问题类似。
3.输出的精度问题,需要添加iomanip库,使用setprecision方法设置精度。
代码如下所示:

#include 
#include 
using namespace std;

int main()
{
    double n, m, t = 0;
    int i=0;
    cin >> n >> m;
    while (!(n == 0 && m == 0)) //判断结束条件
    {
        for (; n <= m; n++)   //累加
        {
            t += 1 / (n * n);
        }
        cout << fixed << setprecision(5) <<"Case " <<++i<<":" << t << endl;  //设置输出格式
        t = 0;
        cin >> n >> m;
    }
    return 0;
}

运行结果如下图所示:

新手驾到,多指教!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/664614.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号