题目来源 计蒜客程序设计竞赛基础课(蓝桥杯省赛)
算法标签 递推
题目描述
相信小伙伴们都学过斐波那契数列,它是这样的一个数列:1,1,2,3,5,8,13,21…。
用fn表示斐波拉契数列的第项,则有:f1=f2=1,fn=fn-1+fn-2(n>2).
输入一个n,求出fn对10E9+7取模结果。
输入格式
输入一个整数 n(1 <= n <= 100000)
输出格式
输入 fn{mod} 1000000007
样例输入
3
样例输出
2
题目思路
1.用三个变量模拟数组滚动,省区数组
2.求出fn对10E9+7取模结果
,所以直接对(f2+f1)取余,这样必然整个数列满足条件
题目代码
#include <iostream>
using namespace std;
const int N=1e9+7;
int main()
{
long long f3,f2=1,f1=1;
int n;
cin>>n;
for(int i=3;i<=n;i++)f3=(f2+f1)%N,f1=f2,f2=f3;
cout<<f3;
return 0;
}