For each test case, there is a single line, containing a single positive integer n .
The input file is at most 1M.
1 2 4 8 15
1.00000 1.25000 1.42361 1.52742 1.58044
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const double eps=1e-7; long long gcd(long long x,long long y) { if(x<y) swap(x,y); while(y) { int t=y; y=x%y; x=t; } return x; } double ans[1000005]; char n[10000000]; int main() { long long i; long long fang; for (i=1;i<=1000000;i++)//存储所有的数字; { fang=i*i; ans[i]=ans[i-1]+1.0/fang; } while(~scanf("%s",n)) { int l=strlen(n); if(l>6)// printf("%.5lf\n",ans[1000000]); else { int n1=0; for(i=0;i<l;i++)//字符转换为数字; n1=n1*10+n[i]-'0'; if(n1>1000000) printf("%.5lf",ans[1000000]); else printf("%.5lf\n",ans[n1]); } } return 0; }
/*#include <cstdio> #include <cstring> using namespace std; double ans[115555]; char a[115555]; int main() { int i,l,n,flag; for (i=1; i<=115000; i++) ans[i]=ans[i-1]+1.0/i/i; while(~scanf("%s",a)) { n=flag=0; l=(int)strlen(a); for (i=0; i<l; i++) if (a[i]!='0') { if (l-i>6) flag=1; else { for (; i<l; i++) n=n*10+(a[i]-'0'); if (n>115000) flag=1; } break; } if (flag) printf("1.64493\n"); else printf("%.5f\n",ans[n]); } return 0; } #include <iostream> #include <cmath> #include <vector> #include <cstdlib> #include <cstdio> #include <climits> #include <ctime> #include <cstring> #include <queue> #include <stack> #include <list> #include <algorithm> #include <map> #include <set> #define LL long long #define Pr pair<int,int> #define fread(ch) freopen(ch,"r",stdin) #define fwrite(ch) freopen(ch,"w",stdout) using namespace std; const int INF = 0x3f3f3f3f; const int mod = 1e9+7; const double eps = 1e-8; const int maxn = 11234567; char arr[maxn]; int main() { //fread(); //fwrite(); while(~scanf("%s",arr)){ int len = strlen(arr); if(len > 6) puts("1.64493"); else{ int v; sscanf(arr,"%d",&v); if(v >= 110292) puts("1.64493"); else if(v >= 52447) puts("1.64492"); else { double ans = 0; for(int i=1;i<=v;i++){ ans += 1.0 / (1.0 * i * i); } printf("%.5f\n",ans); } } } return 0; } #include <iostream> #include <algorithm> #include <string.h> #include <stdio.h> #include <queue> #include <set> #include <map> #include <stack> #include <math.h> #define LL long long #define inf 0x3f3f3f3f using namespace std; char str[1000000]; int in(LL &n){ char c; if(c=getchar(),c==EOF) return 0; while((c<='0'||c>'9')) c=getchar(); int len = 0; str[len++] = c; while(c=getchar(),c>='0'&&c<='9') str[len++] = c; str[len] = 0; if(len > 6) return 2; n = 0; for(int i = 0; i < len; ++i) n=n*10+(str[i]-'0'); return 1; } int main() { LL n; int m; char ch; while((m=in(n)),m){ if(m == 2){ printf("1.64493\n"); continue; } if(n > 150000){ printf("1.64493\n"); continue; } double ans = 0.0; for(LL i = 1; i <= n; ++i){ ans += 1.0/((double)i*(double)i); } printf("%.5f\n",ans); } return 0; } #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> using namespace std; double ans[1000010] = {0}; char str[1000010]; int main(){ for(long long i = 1 ; i <= 1000000 ; i++ ) { ans[i] = 1.0 / (i * i); } for(int i = 1 ; i <= 1000000 ; i++) { ans[i] = ans[i] + ans[i - 1]; } while(~scanf("%s",str)){ char *p = str; while((*p) == '0') p++; int n; if(strlen(p) > 7) n = 1000000; else sscanf(p,"%d",&n); if(n <= 1000000) { printf("%.5f\n",ans[n]); } else { printf("%.5f\n",ans[1000000]); } } return 0; }*/