Problem G: 序列求和

来源:互联网 发布:文华财经分析软件 编辑:程序博客网 时间:2024/05/07 21:20
  • 分子分母 均是斐波那契数列先给前两项赋值,逐步向后累加
    (需要判断==1的情况)
  • 分数求和:分子分母单独求,得到的每一对算出一项,不断累加

传送门
Description

有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13…… 求出这个数列的前N项之和,保留两位小数。

Input

N

Output

数列前N项和

Sample Input

10

Sample Output

16.48

AC代码

#include <iostream>#include <iomanip>using namespace std;int main(){ float sum11=2.0f,sum21=1.0f,sum12=3.0f,sum22=2.0f,N; //第一行(分子):1  2  3  5  8  13 21 //第二行(分母):2  3  5  8  13 21 34 //sum11是第一行数第一个值,sum12是第一行数第二个值 //sum21是第二行数第一个值,sum22是第二行数第二个值 float sum1=0.0f,sum2=0.0f; float sum=3.5f; cin>>N; if(N==1)        sum=2.0f;    else if(N==2)        sum=3.5f;    else{         for(int i=2;i<N;i++){            sum1=sum11+sum12;            sum2=sum21+sum22;            sum+=(sum1/sum2);             sum11=sum12;            sum21=sum22;            sum12=sum1;            sum22=sum2;  //这样循环不断向后推移            }    }  cout<<fixed<<setprecision(2)<<sum<<endl;return 0;}
0 0