hdu5879 Cure(水)

来源:互联网 发布:安装ubuntu分区顺序 编辑:程序博客网 时间:2024/06/06 02:46

思路:打表可知n>=1e6的时候会收敛到一个值,那么直接打表就好了

坑点:没说n多大,只给了输入文件大小,所以n可能很大很大,直接用字符串就好了


#include<bits/stdc++.h>using namespace std;const int maxn = 1e6+7;double sum[maxn];string n;void init(){sum[0]=0;    for(int i = 1;i<=1e6;i++)      sum[i]=sum[i-1]+double(1.0/i/i);}int main(){init();while(cin >> n){        if(n.size()>=7)printf("%.5lf\n",sum[1000000]);else{int len = n.size();int a = 0;for(int i = 0;i<len;i++)a = a*10+n[i]-'0';printf("%.5lf\n",sum[a]);}}}


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
 


0 0
原创粉丝点击