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

求出次数列的前20项之和。
请将结果的数据类型定义为double类型。
Input
无
Output
小数点后保留6位小数,末尾输出换行。
Examples
Input
无
Output
32.660261
Solution 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; }
Solution 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; }