蜜蜂問題- 斐波那契數列

這裏寫圖片描述題目描述

    一隻蜜蜂在上圖所示的數字蜂房上爬動,已知它只能從標號小的蜂房爬到標號大的相鄰蜂房,現在問你:蜜蜂從蜂房M開始爬到蜂房N,M<N,有多少種爬行路線? 

輸入

輸入M,N的值。
輸出

爬行有多少種路線。
樣例輸入

1 14
樣例輸出

377

分析
1-1 1
1-2 1
1-3 2
1-4 3
1-5 5
1-6 8
…….
斐波那契數列。
大數相加。

#include<bits/stdc++.h>
using namespace std;
string f1,f2,f;
int n,m;
string P  (string & num,string add){
    int g=0;
    if(num.length()<add.length()){
        string t=num;
        num=add;
        add=t;
    }
    string t (num.length()-add.length(),'0');
    add= t+add;
    int len1=num.length(),len2=add.length();
    for(int i=len1-1;i>=0;i--){
        int t=((num[i]-'0') +(add[i]-'0') + g);
        num[i]=t%10+'0';
        g=t/10;
    }
    if(g!=0){
        num.insert(0,string(1,(char)g+'0'));
    }
    return num;
}
int main (void){
    while(cin>>m>>n&&n &&m){
        f1="1";
        f2="2";
        for(int i=3;i<=n-m;i++){
            f=P(f1,f2);
            f1=f2;
            f2=f;
        }
        cout<<f2<<endl;
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章