子序列的和

#include <stdio.h>
#include <math.h>
// 算法竞赛的目标是编程对任意输入均得到正确的结果。
// 请先独立完成,如果有困难可以翻阅本书代码仓库中的答案,但一定要再次独立完成。
// “抓住主要矛盾”——始终把学习、实验的焦点集中在最有趣的部分。如果直观地解决方案行得通,就不必追究其背后的原理。

/**
【题目】子序列的和(subsequence)
输入两个正整数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

*/


/**
【分析】循环处理
*/

int main()
{
    double sum;
    int n,m;
    int i;

    while (scanf("%d%d",&n,&m) != EOF) {
        if (n == 0 && m == 0) {
            break;
        }

        if (n >= m || m > pow(10,6) || n < 0) {
            printf("Input Error");
        }

        sum = 0; // 重置sum的值
        for (i=n;i<=m;i++) {
            sum += 1.0 / pow(i,2);
        }

        printf("%.5lf\n",sum);
    }

    return 0;
}


posted @ 2018-03-09 14:33  TBHacker  阅读(980)  评论(1编辑  收藏  举报