[计蒜客(蓝桥杯省赛)]斐波拉契数列

题目来源 计蒜客程序设计竞赛基础课(蓝桥杯省赛)

算法标签 递推

题目描述

相信小伙伴们都学过斐波那契数列,它是这样的一个数列: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;
}
发布了180 篇原创文章 · 获赞 19 · 访问量 5784

猜你喜欢

转载自blog.csdn.net/weixin_43910320/article/details/105320161
今日推荐