HDUOJ 2011 多项式求和

问题 A: 多项式求和

时间限制: 1 Sec   内存限制: 32 MB
提交: 67   解决: 39
[ 提交][ 状态][ 讨论版]

题目描述

多项式的描述如下:
1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...
现在请你求出该多项式的前n项的和。

输入

输入数据由2行组成,首先是一个正整数m(m<100),表示测试实例的个数,第二行包含m个正整数,对于每一个整数(不妨设为n,n<1000),求该多项式的前n项的和。

输出

对于每个测试实例n,要求输出多项式前n项的和。每个测试实例的输出占一行,结果保留2位小数。

样例输入

2
1 2

样例输出

1.00
0.50

提示

学长用的预处理只算一遍 省时一点 时间复杂度为O(1) 
#include

int main()
{
	//预处理最舒服,时间复杂度为O(1) 
	double ans[1005];//不用纠结用float还是double,一步到位用精度更高的double。 
	double m=1,temp=1,cnt=2;
	ans[1]=1; 
	for(int i=2;i<1000;i++)
	{
		temp=m/cnt;
		if(i%2)//奇数
		{
			ans[i]=ans[i-1]+temp;
		} 
		else
		{
			ans[i]=ans[i-1]-temp;
		}
		cnt++;
	}
	
	int t,n;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		printf("%0.2lf\n",ans[n]);
	}
	return 0;
}

#include
double fun(int n)
{
    int flag=1,temp=1;
    double sum=0,Z;
    while(n--)
    {
        sum+=flag*(1.0/temp);
        temp++;
        flag=-flag;
    }
    return sum;
}
int main()
{
    int m,n;
    scanf("%d",&m);
    for(int i=0;i



你可能感兴趣的:(语言入门)