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.
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
1 2 4 8 15
Sample Output
1.00000 1.25000 1.42361 1.52742 1.58044
Source
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;
}