Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2
,其中F1=F2=1
。
输入格式
输入包含一个整数n。
输出格式
输出一行,包含一个整数,表示Fn除以10007的余数。
样例输入
10
样例输出
55
样例输入
22
样例输出
7704
1 <= n <= 1,000,000。
————————————————
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int fib1(int n){
if(n<1)
return -1;
if(n==1 || n==2)
return 1;
return fib1(n-1)+fib1(n-2);
}
int fib2(int n){
if(n<1)
return -1;
int *a=new int[n];
//定义一个数组
a[1]=1;
a[2]=1;
for(int i=3;i<=n;i++)
a[i]=a[i-1]+a[i-2];
return a[n];
}
int fib3(int n){
int i,s1,s2;
if(n<1)
return -1;
if(n==1 || n==2)
return 1;
s1=1;
s2=1;
for(i=3;i<=n;i++){
s2=s1+s2;
//辗转相加法
s1=s2-s1;
//记录前一项
}
return s2;
}
int main(){
int m;
cin>>m;
cout<<fib1(m)<<endl;
cout<<fib2(m)<<endl;
cout<<fib3(m)<<endl;
return 0;
}