hdoj5879Cure

来源:互联网 发布:引用,指针和数组的区别 编辑:程序博客网 时间:2024/06/06 01:38

Cure

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


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

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<list>#include<vector>#include<map>#include<set>using namespace std;typedef long long LL;typedef pair<int,int>pii;const int maxn=1000010;double ans[maxn];char s[1000010];int main(){    for(LL i=1;i<=1000000;++i){        ans[i]=ans[i-1]+1.0/(i*i);    }    while(scanf("%s",s)!=EOF){        int len=strlen(s);        if(len>=7){            printf("%.5lf\n",ans[1000000]);        }        else {            int c=0;            for(int i=0;i<len;++i){                c=c*10+(s[i]-'0');            }            printf("%.5lf\n",ans[c]);        }    }    return 0;}


0 0