HDU - 5879

Given an integer n, we only want to know the sum of 1/k^2 where k from 1 to n.

Input

There are multiple cases.
For each test case, there is a single line, containing a single positive integer n.
The input file is at most 1M.

Output

The required sum, rounded to the fifth digits after the decimal point.

Sample Input

1
2
4
8
15

Sample Output

1.00000
1.25000
1.42361
1.52742
1.58044

题意

就是简单的从1 + 1/2^2 + 1/3^2 + … + 1/n^2。

思路

如果单纯的暴力解题肯定会超时。所以我们这里用打表的方法。先把各个n的值所对应的结果存贮起来,再进行调用。

AC代码

#include<stdio.h>
#include<math.h>
 
double a[1000005];

int main ()
{
	double k, sum = 0;
	for(int i = 1; i <= 1000000; i++)
	{
		k = 1.0 / pow(i, 2);
		sum += k;
		a[i] = sum;
	}
	long long n;
	while(scanf("%d",&n)!=EOF)
	{
		if(n < 1000000)
			printf("%.5lf\n",a[n]);
		else
			printf("1.64493\n");//当n大于7位数的时候,它算出来的结果就是一个固定的值,即1.64493
	}
}

//总结:这题的难点是处理大数据的问题,因为这个数据非常大,所以需要找到规律,即一位一位的位数去找,当趋向于很大的时候,这题的结果必然趋向一个恒定的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值