题意
给出几个N,输入文件不超过1M。对每个N求数列{1/k^2}的前N项和。精确到小数点后5位
思路
这个数列是有极限的,小数据暴力,中等数据积分近似,大数据直接输出极限。打表测试百万时已经打到极限,所以打表百万,更大输出极限。对于很大的N,我还放了一下前导零,不知道有没有,总之这场题普遍挺坑。
AC代码 C
#include <stdio.h>
#define MAXN 1000005
long double ans[MAXN];
char str[MAXN];
int main()
{
int i, n, all;
for (i = 1, *ans = 0; i < MAXN; i++)
ans[i] = ans[i - 1] + 1.0 / (long double)i / (long double)i;
while (scanf("%s", str)>0)
{
for (i = 0; str[i] && str[i] == '0'; i++);
for (n = i; str[n]; n++);
if (n - i > 6)
puts("1.64493");
else
{
for (i = all = 0; i < n; all = all * 10 + str[i++] - '0');
printf("%.5f\n", (double)ans[all]);
}
}
return 0;
}