题目连接:https://cn.vjudge.net/problem/HDU-5879

这题注意输入文件 大小不超过1M

这个式子有一个极限  是 

题目要求输出5位小数,则打表一看最多k=1000000的时候就可以到达了

所以题目输入的数的位数大于7的时候  就直接输出的前五位小数就行了

小于7位的时候打表输出

 

#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
const int MAX = 1e6+10;
double a[MAX];
int main(){
	double ans=0;
	int cnt=0;
	for (int i = 1; i <= 1000000;i++){
		ans+=1.0/i/i;
		a[++cnt]=ans;
	}
	string s;
	while(cin >> s){
		if(s.size()>=7){
			puts("1.64493");
		}
		else{
			int len=s.size();
			int x=0;
			for (int i = 0; i < len;i++){
				x=x*10+(s[i]-'0');
			}
			printf("%.5f\n",a[x]);
		}
	}
	return 0;
}