题目:
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
样例输入
10
样例输出
55
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
//0,1,1,2,3,5......
a[0]=0;
a[1]=1;
for(int i=2;i<=n;i++){
//第三项等于前两项之和,计算每一项的余数。
a[i]=(a[i-1]+a[i-2])%10007;
}
//输出第n项的余数。
cout<<a[n]<<endl;
return 0;
}
注:使用迭代方法,时间复杂度为O(n)。而采用递归的方法,时间复杂度为O(2^n)。