HDU 2009

来源:互联网 发布:php new 对象 编辑:程序博客网 时间:2024/04/30 01:48

求数列的和

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 74554 Accepted Submission(s): 45280

Problem Description
数列的定义如下:
数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。

Input
输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。

Output
对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。

Sample Input
81 4
2 2

Sample Output
94.73
3.41

AC代码:

#include <stdio.h>#include <math.h>int main (){     int m,n,i;    double sum,num;    double a[1008];      while (scanf("%d%d",&n,&m)!=EOF){        a[0]=n;        sum=n;         for (i=1;i<m;i++){            a[i]=sqrt(a[i-1]);            sum+=a[i];            }        printf("%.2lf\n",sum);    }    return 0;    }

用数组写的明显有点繁琐了,下面的代码更加简洁些:
另一个AC代码:

#include <stdio.h>#include <math.h>int main(){    double m,n,sum,i;    while(scanf("%lf%lf",&n,&m)!=EOF){    for(i=0,sum=0;i<m;i++){        sum+=n;        n=sqrt(n);}        printf("%.2lf\n",sum);    }    return 0;}
0 0