题目

题目描述

请编写一个程序,输出斐波那契数列的第nnn项模109+710^9+7109+7的值。
斐波那契数列有以下递归算式定义。

fib(n)={1,n>01,n=1fib(n−1)+fib(n−2),otherfib(n)=\left\{\begin{matrix} 1,n>0\\ 1,n=1\\ fib(n-1)+fib(n-2),other \end{matrix}\right. fib(n)=⎩⎨⎧​1,n>01,n=1fib(n−1)+fib(n−2),other​

输入格式

输入一个非负整数n(n<106)n(n < 10^6)n(n<106)。

输出格式

输出斐波那契第nnn项模109+710^9 + 7109+7的值

题解

#include<cstdio>
using namespace std;
const int N = 1e6 + 10,MOD = 1e9 + 7;
int f[N];
int main(){int n;scanf("%d",&n);f[0] = f[1] = 1;for(int i = 2;i <= n;i++)f[i] = (f[i - 1] + f[i - 2]) % MOD;printf("%d\n",f[n]);return 0;
}

斐波那契数列,最容易想到也最容易实现的一种方式是递归,如下所示:

int f(int i){if(i == 1 || i == 0) return 1;return f(i - 1) + f(i - 2);
}

然而在这里行不通。
请注意数据范围:n<106n < 10^6n<106
由于数据规模比较大,使用递归存在爆栈的隐患。

所以这里可以使用动态规划的方式理解和实现。

f[i]f[i]f[i]为一个状态,当i>1i > 1i>1时,其值由更小的两个状态值递推而出。

此题常作为动态规划的入门教学题,需要特别注意理解其中的状态表示和状态递推的思想。


原创不易,感谢支持!

[题解]斐波那契数列相关推荐

  1. 牛客题霸 [斐波那契数列] C++题解/答

    斐波那契数列 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1). n<=39 题解: 斐波那契数列..递推的基础题目 众 ...

  2. 斐波那契数列升级版(洛谷P2626题题解,C++语言描述)

    题目要求 题目链接 分析 首先是求斐波那契数列,这东西我就不说了,能看到这篇题解的你肯定会. 为什么要用数组呢?为了记忆化,防止重复算. 当然,由于本题是单查询,所以不必记忆化,但记忆化对多查询真的会 ...

  3. 洛谷P1962 斐波那契数列题解

    题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数) 题目描述 请 ...

  4. NOIP模拟题 斐波那契数列

    题目大意 给定长度为$n$序列$A$,将它划分成尽可能少的若干部分,使得任意部分内两两之和均不为斐波那契数列中的某一项. 题解 不难发现$2\times 10^9$之内的斐波那契数不超过$50$个 先 ...

  5. 斐波那契数列及青蛙跳台阶问题

    题目1: 写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项. 斐波那契(Fibonacci)数列定义例如以下: f(n)=⎧⎩⎨⎪⎪0,1,f(n−1)+f(n−2),n=0n=1n& ...

  6. HDU4549 M斐波那契数列 —— 斐波那契、费马小定理、矩阵快速幂

    题目链接:https://vjudge.net/problem/HDU-4549 M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Li ...

  7. LeetCode——动态规划:斐波那契数列

    斐波那契数列 目录 爬楼梯 强盗抢劫 强盗在唤环形街区抢劫 信件错排 注:具体解析请点击链接进入LeetCode题解区. 1. 爬楼梯 https://leetcode-cn.com/problems ...

  8. 斐波那契数java实现_斐波那契数列Java实现[剑指offer]

    描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 题解 1.递归实现 采用递归的方式进行实现时,从第n个节点向下递归时,存 ...

  9. c语言斐波那契数列_剑指Offer-10-I.斐波那契数列

    题目 题目描述 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - ...

最新文章

  1. 本地搭建Hadoop伪分布式环境之四:开启搭建Hadoop2.4.0之旅
  2. cpu只能单通道是什么表现_【小白入门】为什么要组内存双通道?
  3. 谈谈对集合框架的理解?
  4. JavaScript中的this关键字
  5. 路由器 android 打印机,谷歌关闭云打印服务,安卓和Chrome办公用户要慌了
  6. Java的jps命令使用详解
  7. mysql 错误问题_Mysql常见的几个错误问题及解决方法
  8. win11如何切换输入法 win11快速切换输入法
  9. IPS入侵防御系统、IDS入侵检测系统
  10. TIA博途_OB组织块的功能和使用方法介绍
  11. 局域网有几台电脑频繁断网_电脑经常自动断网掉线分析
  12. 导出的 EXCEL 用 office2016 打不开
  13. java里emp是什么_EMP微前端分享内容回顾(中)
  14. 软件测试简历,别再做无用的简历了
  15. 使用supervisor管理laravel队列 - 配置文件supervisord.conf
  16. VBA写入公式(3):身份证公式集
  17. 《了不起的 JavaScript 工程师 - 电子书》
  18. Java 字符串分割split空字符串丢失解决方案
  19. 30秒在线卖出3000套房,对于云系统来说只是小意思!
  20. 火山/映客直播里用到的库

热门文章

  1. strcmp,strcpy,strstr函数
  2. 虚拟DOM中的key
  3. handlebars.js_Handlebars.js入门指南
  4. sssssssssssssssssssssssssss
  5. HC-SR04超声波测距模块的高精度使用方法
  6. 什么是PEP8编码风格?
  7. 【已解决】致命错误:Python.h:没有那个文件或目录
  8. 将应用在最近应用中隐藏
  9. SkyLight 添加LightingChannelMask功能
  10. linux设备驱动之pci设备的I/O和内存