HDU2604Queuing
问题是求,n没有给定范围,应该是无限大,但是题目的精度卡在1e-5
是一个世纪难题,但是该问题存在极限 PI26 ,这里有它详细的证明,很NB,巴塞尔问题极限证明
打表确定n的上限:
#include<cstdio>
#include<iostream>
#include<cmath>
const double PI=acos(-1);
using namespace std;
typedef long long LL;
int main(){
double n;
double sum;
while(~scanf("%lf",&n)){
sum=0;
for(double i=1;i<=n;i++){
sum+=1/(i*i);
printf("%.0lf:%.5lf\n",i,sum);
}
cout<<PI*PI/6.0<<endl;
}
return 0;
}
在精度范围内,当n在110300左右,已经到达极限,1.64493不会在变化,所以,可以对n进行分界,就不会超时或者超内存了
AC代码:
#include<iostream>
#include <cstdio>
#include <cmath>
const double PI=acos(-1);
using namespace std;
int main()
{
//freopen("input.txt","r",stdin);
double n;
while(~scanf("%lf",&n)){
if(n>110300)
printf("%.5lf\n",PI*PI/6.0);
else{
double ans=0;
for(double i=1;i<=n;i++)
ans+=1/(i*i);
printf("%.5lf\n",ans);
}
}
}