3347 - 习题5-10 分数序列求和

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 12 MB

有如下分数序列

求出次数列的前20项之和。

请将结果的数据类型定义为double类型。

题目输入

题目输出

小数点后保留6位小数,末尾输出换行。

输入/输出样例

输入格式

输出格式

32.660261

C语言解答

# include <stdio.h>
int main()
{
	int a[21];
	double b[20];
	int n,i,j=0;
	double c=0;
	a[0]=1,a[1]=2;
	for(n=2;n<=20&&n>1;n++)
	{
	a[n]=a[n-1]+a[n-2];
	}
	for(i=0;i<=20;i++)
	{
		b[i]=(double)a[i+1]/a[i];
	}
	while (j<=19)
	{
		c = c+b[j];
		j= j+1;
	}
	printf("%.6lf\n",c);
	return 0;
}

C++解答

#include<stdio.h>
#include<math.h>
#define sqrt_5    2.2360679774997896964091736687313
#define A    ((1 + sqrt_5) / 2)
#define B    ((1 - sqrt_5) / 2)
#define C    (B / A)
double f(int n)
 {
     double a, p;
     p = pow(C, n + 1);
     a = (A - B * p) / (1 - p);
     return a;
 }
int main()
 {
     int i;
     double a;
     for(a = 0, i = 1; i <= 20; a += f(i++));
     printf("%f\n", a);
     return 0;
 }