Problem Description
数列的定义如下:
数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。
数列的第一项为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
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2009
#include<stdio.h>
#include<math.h>
int main()
{
double fsqrt(double n, double m);
double courtsum(double n,double m);
int n,m;
while(~scanf("%d %d",&n,&m))
{
printf("%.2f\n",courtsum(n,m));
}
}
double fsqrt(double n, double m) //求数列函数
{
if(m==1) return n;
return sqrt(fsqrt(n,m-1)); //这里利用递归,但是记得传的实参有两个,一个是n,一个是m-1
}
double courtsum(double n,double m) //数列求总和函数
{
int i;
double sum=0;
for(i=m;i>0;i--)
{
sum+=fsqrt(n,i);
}
return sum;
}
#include<math.h>
int main()
{
double fsqrt(double n, double m);
double courtsum(double n,double m);
int n,m;
while(~scanf("%d %d",&n,&m))
{
printf("%.2f\n",courtsum(n,m));
}
}
double fsqrt(double n, double m) //求数列函数
{
if(m==1) return n;
return sqrt(fsqrt(n,m-1)); //这里利用递归,但是记得传的实参有两个,一个是n,一个是m-1
}
double courtsum(double n,double m) //数列求总和函数
{
int i;
double sum=0;
for(i=m;i>0;i--)
{
sum+=fsqrt(n,i);
}
return sum;
}