杭电2009 求数列的和

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
 
/* 
#include<cstdio>
int main()
{
	int a,b,c;
	int d[13]={31,28,31,30,31,30,31,31,30,31,30,31};
	while(~scanf("%d/%d/%d",&a,&b,&c))
	{
		int num=0;
		for(int i=0;i<b-1;i++)
			num+=d[i];
		if(a%400==0||(a%4==0&&a%100!=0))
		{
			if(b>2)
				num+=c+1;
			else
				num+=c;
		}
		else
			num+=c;
		printf("%d\n",num);
	}
	return 0;
} */ 

/*
解题思路: 
	float sum=0;
	//计算出每一项数的平方根,sum+=it;k++;(计数器++;) 
	// if(k>m) 结束返回sum的值
	///while(k<m)计数器累加到m 
	例如: 
	n==10;		sum=n; 
	n2=根号(10);   sum=sum+n2;
	n3=根号(根号(10));  sum=sum+n2+n3;
	n4=根号(根号(根号(10)));  sum=sum+n2+n3+n4; 
	.
	.
	.nm=根号(根号(根号(...(10))));  sum=sum+n2+n3+n4+...+nm; 
	
	while(k<m)
	{
		n=sqrt(n);
		sum+=n;
		k++;
	}
	
	*/
#include<stdio.h> 
#include<math.h>


int main()
{
	double n,sum=0;
	int m,k=1;//由于n为第一项,所以k初始化为1 
	while(scanf("%lf%d",&n, &m)!=EOF)
	{
		sum=n;
		while(k<m)
		{
			n=sqrt(n);//对每一次的n值取平方根 
			sum+=n;//累加每一项 
			k++;//计数器 
		}
	printf("%.2f\n",sum);//小数点后面几位就是保留几位小数 
	k=1;	//更新k的值以用于下一组的数据输入 
	}
	
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值