刘汝佳-算法竞赛入门-子序列的和
输入两个正整数n<m<10^6,输出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
解答:
float输入输出格式为:%f,double输入输出格式为%lf
#include<stdio.h>
int main(){
float n,m,temp,i,sum; //定义输入输出数据
int kase=0;
while(scanf("%f%f",&n,&m)==2 &&n &&m){//输入两个数,同时为大于0的数
if(n>100000 && m>100000){ //判断是否大于数字限制
break;
}
for(i=n;i<=m;i++){
sum = 1/(i*i) + sum; //将结果相加
}
n=0,m=0; //记住内循环结束以后将n,m归零,以进行下一次循环
printf("Case %d: %.5f",++kase,sum);
sum = 0; //sum在输出完成后归零
}
return 0;
}