输入两个正整数n<m<106,输出 ,保留5位小数。输入包含多组数据, 结束标记为n=m=0。提示:本题有陷阱。
样例输入:
2 4
65536 655360
0 0
样例输出:
Case 1: 0.42361
Case 2: 0.00001
#include<iostream>
using namespace std;
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)&&(n!=0||m!=0))
{
double sum=0;
for(n;n<=m;n++)
{
sum+=1.0/n/n;
//cout<<sum<<endl;
}
printf("%.5lf\n",sum);
}
system("pause");
return 0;
}
如果用sum+=1.0/(n*n); 会出现数据溢出的情况 为啥子呢?
你想想嘛 用6553665536 有多大 再看655360655360有多大
这样子就可以看得出会怎么样了
所以用题目中sum+=1.0/n/n;这样的方法
数据溢出溢出啊。。。。