码迷,mamicode.com
首页 > 其他好文 > 详细

21. 子序列的和 subsequence

时间:2019-12-31 00:51:38      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:font   cin   mes   sub   ++i   sum   turn   正整数   思路   

题目:

输入两个正整数 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;
}

21. 子序列的和 subsequence

标签:font   cin   mes   sub   ++i   sum   turn   正整数   思路   

原文地址:https://www.cnblogs.com/Hello-Nolan/p/12122156.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!