Problem G: 序列求和

  • 分子分母 均是斐波那契數列先給前兩項賦值,逐步向後累加
    (需要判斷==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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章