問題描述:
Fibonacci數列的遞推公式為:Fn=Fn-1+Fn-2,其中F1=F2=1。
當n比較大時,Fn也非常大,現在我們想知道,Fn除以10007的余數是多少。
輸入格式:
輸入包含一個整數n。
輸出格式:
輸出一行,包含一個整數,表示Fn除以10007的余數。
代碼:
1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 int n; 7 int f[1000005]; 8 9 int fib(int i){ 10 if(i==1||i==2){ 11 return 1; 12 }else{ 13 if(f[i]) return f[i]; 14 else return f[i]=(fib(i-2)+fib(i-1))%10007; 15 //保存余數 16 } 17 } 18 19 void solve(){ 20 printf("%d",fib(n)); 21 } 22 23 int main() 24 { 25 scanf("%d",&n); 26 solve(); 27 return 0; 28 }