子序列的和
题目
输入两个小于10^6的正整数n,m,输出1/n^2+1/(n+1)^2+…+1/m^2,保留5位小数。输入包含多组数据,结束标记为n=m=0
样例输入:
2 4
65536 655360
0 0
样例输出
Case 1: 0.42361
Case 2: 0.00001
为了避免n^2溢出,用浮点数记录1/n,再平方,而不是记录n^2,再求1/n^2。
代码如下
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main(){
double mark,sum;
int n,m,i=0;
while(scanf("%d %d",&n,&m)!=EOF){
i++;
if(n==0&&m==0) break;
sum=0;
for(int count1=n;count1<=m;count1++){
mark=1/(count1+0.0);
mark*=mark;
sum+=mark;
}
printf("Case %d: %.5f\n",i,sum);
}
}