蜜蜂問題- 斐波那契數列
阿新 • • 發佈:2018-12-31
題目描述
一隻蜜蜂在上圖所示的數字蜂房上爬動,已知它只能從標號小的蜂房爬到標號大的相鄰蜂房,現在問你:蜜蜂從蜂房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;
}