1002 Cure(打表)

来源:互联网 发布:淘宝包包拍摄技巧 编辑:程序博客网 时间:2024/06/06 21:42

Cure

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 581    Accepted Submission(s): 206


Problem Description
Given an integer n, we only want to know the sum of 1/k2 where k from 1 to n.
 

Input
There are multiple cases.
For each test case, there is a single line, containing a single positive integer n.
The input file is at most 1M.
 

Output
The required sum, rounded to the fifth digits after the decimal point.
 

Sample Input
124815
 

Sample Output
1.000001.250001.423611.527421.58044
 

Source
2016 ACM/ICPC Asia Regional Qingdao Online

 

n小于某个数时打表,大于某个数时输出某个定值(由数学知识知,当n无穷大时,值为 6分之π方)

#include <iostream>#include <string>#include <cstdio>using namespace std;int main(){    long long i;    double ans[150001], an = 0;    int n, tot = 1;    for(i = 1; i <= 150001; i++){        an += 1.0 / (i * i);        ans[tot++] = an;    }           string s;    while(cin >> s){        n = 0;        int len = s.length();        for(i = 0; i < len; i++){            n = n * 10 + s[i] - '0';            if(n >= 150000) break;        }        if(n < 150000) an = ans[n];        else an = 1.64493;        printf("%.5lf\n", an);    }    return 0;}


0 0