[计蒜客]斐波拉契数列 原创

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

算法标签 递推,记忆化

题目描述

相信小伙伴们都学过斐波那契数列,它是这样的一个数列: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)取余,这样必然整个数列满足条件

AC代码

#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;
}
更新写法
#include<iostream>

using namespace std;

const int MOD=1e9+7,N=100000;
int f[N]={0,1,1};

int main()
{
  int n;
  cin>>n;
  
	for(int i=3;i<=n;i++)
  		f[i]=(f[i-1]+f[i-2])%MOD;
  
  cout<<f[n];
    
  return 0;
}
posted @   俺叫西西弗斯  阅读(0)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示