子序列的和

题目

输入两个正整数n<m<10^6 ,输出 ,保留5位小数。输入包含多组数据,
结束标记为n=m=0。提示:本题有陷阱。

样例输入:
2 4
65536 655360
0 0

样例输出:
Case 1: 0.42361
Case 2: 0.00001

解答

注:陷阱就是在n特别大时如果直接n*n就会溢出,所以只能连除两次

#include<stdio.h> 
int main() {
	int count = 0;
	while (1) {
		int n = 0;
		int m = 0;
		scanf("%d", &n);
		scanf("%d", &m);
		if (n == m&&n == 0) {
			break;
		}
		count++;
		double sum = 0;
		for (int i = n; i <= m;i++) {
			sum += 1.0 / i / i;
		}
		printf("Case %d:%.5f\n",count,sum);
	}
	return 0;
}

 

© 版权声明
THE END
喜欢就支持一下吧
点赞1赞赏 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容