1. 程式人生 > >蜜蜂問題- 斐波那契數列

蜜蜂問題- 斐波那契數列

這裡寫圖片描述題目描述

    一隻蜜蜂在上圖所示的數字蜂房上爬動,已知它只能從標號小的蜂房爬到標號大的相鄰蜂房,現在問你:蜜蜂從蜂房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; }