入门训练 Fibonacci数列


问题描述:

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 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM