hdu 5879 Cure
n 很大的时候答案趋近于10^6求出的值,n小的时候预处理暴力即可。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
using namespace std;
#define INF 0x3f3f3f
#define pi acos(-1.0)
typedef long long LL;
const int MAX=1000010;
char s[MAX];
double sum[MAX];
int main()
{
LL t,i,j;
sum[0]=0;
for(i=1; i<=1000000; i++)
{
double x=1.0/i/i;
sum[i]=sum[i-1]+x;
}
while(~scanf("%s",&s))
{
int len=strlen(s);
if(len>=7)
printf("%.5lf\n",sum[1000000]);
else
{
int n=0;
for(int i=0;i<len;i++)
{
n=n*10+s[i]-'0';
}
//printf("%d\n",n);
printf("%.5lf\n",sum[n]);
}
}
return 0;
}
本文提供了一种解决HDU5879 Cure问题的有效算法。通过预处理和暴力计算的方法,实现了对不同输入规模的高效处理。对于较大的n值,采用逼近10^6的固定值;而对于较小的n值,则直接计算。

被折叠的 条评论
为什么被折叠?



