HDUOJ 2011 多项式求和

来源:互联网 发布:mac开机后怎么换系统 编辑:程序博客网 时间:2024/06/05 17:18

问题 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位小数。

样例输入

21 2

样例输出

1.000.50

提示

学长用的预处理只算一遍 省时一点 时间复杂度为O(1) 
#include<stdio.h>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<stdio.h>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<m;i++)    {        scanf("%d",&n);        double x=fun(n);        printf("%.2lf\n",x);    }    return 0;}



原创粉丝点击