问题:
相信小伙伴们都学过斐波那契数列,它是这样的一个数列:1,1,2,3,5,8,13,21⋯。
用 fn 表示斐波那契数列的第 n 项,则有:f1=f2=1,fn=fn−1+fn−2(n>2)。
输入一个 n,求出 fn 对 1000000007(109+7) 取模结果。
输入格式
输入一个整数n(1≤n≤100000)。
输出格式
输入 fnmod1000000007 的值。
样例输入
3
样例输出
2
代码详解:
#include <iostream>
using namespace std;
int main() {
int f1,f2,f;
int n;
cin>>n;
if(n==1||n==2){
f=1;
}
else{
f1=1;
f2=1;
for(int i=2;i<n;i++){
f=(f1+f2)%1000000007;//此题重点:数据在不停加的时候,会出现溢出情况,所以在中的时候就应该取模了
f1=f2;
f2=f;
}
}
cout<<f<<endl;
return 0;
}