题意:
求 1<=i<=n 1/(i*i)的和 n很大
思路:
1M=1e6B 位数~=1e6/4B
当n特别大的时候,n*n就已经很小了,几乎不影响结果,所以暴力跑一下1e6以内的数据
题目只让输出到小数点后5位,不要多输出...
#include <bits/stdc++.h>
using namespace std;
#define ll long long
double num[1001000];
char s[1000000];
void init()
{
num[1]=1.0;
for(ll i=2;i<=999999;i++)
{
num[i]=num[i-1]+1.0/(i*i);
}
}
int main()
{
init();
while(scanf("%s",s)!=EOF)
{
int len=strlen(s);
if(len<=6)
{
int x=atoi(s);
printf("%.5f\n",num[x]);
}
else
{
printf("%.5f\n",num[999999]);
}
}
}