描述
Fibonacci数列的递推公式为:Fn=Fn−1+Fn−2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
输入描述
输入包含一个整数n。
输出描述
输出一行,包含一个整数,表示Fn除以10007的余数。
用例输入 1
10
用例输出 1
55
用例输入 2
22
用例输出 2
7704
提示:
在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。
思路:
先来回顾一下斐波那契数列的定义:fb[0]=fb[1]=1 fb[n]=fb[n-1]+fb[n-2];
但fb[n]的值太大,所以可以每次对10007取余,于是就有了下面的代码:
fb[i]=(fb[i-1]+fb[i-2])%10007;
然后根据题目求解:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int fb[n+2]={0};
fb[0]=fb[1]=1; //先定义fb的第0项和第1项为1
for (int i=2;i<=n;i++)
{
fb[i]=(fb[i-1]+fb[i-2])%10007; //每次取余
}
cout<<fb[n-1]; //输出
}
给个赞吧