Problem B. Cure
Time limit: 1s
Color of balloons: 32768K
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
standard input
1
2
4
8
15
standard output
1.00000
1.25000
1.42361
1.52742
1.58044
1.再遇到这样的题目,一定考虑考虑找极限(趋向于固定的值)。
#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
using namespace std;
char arr[11234567];
int main()
{
while(~scanf("%s",arr))
{
int len = strlen(arr);
if(len > 6)
puts("1.64493");
else
{
int v=0;
//sscanf(arr,"%d",&v);
for(int i=0;i<len;i++)
v=v*10+arr[i]-'0';
// cout<<v<<endl;
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;
}