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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值