问题描述:
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 }