当前位置: 首页 > news >正文

【ETOJ P1046】斐波那契数列 题解(数学+动态规划)

题目描述

给定一个整数 T T T,表示样例数。

对于每个样例,给定一个整数 n n n,求斐波那契数列的第 n n n 项。

斐波那契数列定义为 f ( 1 ) = f ( 2 ) = 1 f(1) = f(2) = 1 f(1)=f(2)=1 f ( n ) = f ( n − 1 ) + f ( n − 2 ) f(n) = f(n−1) + f(n−2) f(n)=f(n1)+f(n2)

结果对 1 0 9 + 7 10^9 + 7 109+7 取模。

输入格式

第一行一个整数 T T T。( 1 ≤ T ≤ 100 1 ≤ T ≤ 100 1T100

对于每个样例,一个整数 n n n。( 1 ≤ n ≤ 100 1 ≤ n ≤ 100 1n100

输出格式

对于每个样例,输出一个整数表示答案。

样例输入1

2
3
5

样例输出1

2
5

思路

斐波那契数列是一个非常经典的递归序列,其定义为:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2) (n>=2)。

首先定义了一个数组f,用于存储斐波那契数列的值。然后先将斐波那契数列的前两项设为1,这是斐波那契数列的定义。接下来,通过一个循环,计算出斐波那契数列的前100项。在计算每一项的时候,都用前两项的和对一个大数(1e9+7)取模,防止数值过大导致的溢出。

在计算完斐波那契数列的前100项之后,程序进入一个循环,每次从输入中读取一个数n,然后输出斐波那契数列的第n项。这个循环会一直进行,直到没有更多的输入。


AC代码

#include <iostream>
#define ll long long
#define AUTHOR "HEX9CF"
using namespace std;const int N = 1e2 + 7;
const int MOD = 1e9 + 7;ll f[N];int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);f[1] = f[2] = 1;for (int i = 3; i <= 100; i++) {f[i] = (f[i - 1] + f[i - 2]) % MOD;}int t;cin >> t;while (t--) {int n;cin >> n;cout << f[n] << endl;}return 0;
}
http://www.lryc.cn/news/297084.html

相关文章:

  • 编码技巧——基于RedisTemplate的RedisClient实现、操作Lua脚本
  • Asp .Net Core 系列:Asp .Net Core 集成 Panda.DynamicWebApi
  • 【PTA浙大版《C语言程序设计(第4版)》|编程题】习题7-3 判断上三角矩阵(附测试点)
  • JVM 性能调优 - 参数调优(3)
  • Django(十)
  • OpenHarmony开源鸿蒙开发之旅
  • SpringBoot之整合PageHelper分页插件
  • Android java基础_类的封装
  • Vue-57、Vue技术路由的参数如何传递
  • 《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
  • Linux 软件管理(YUM RPM)
  • 【Makefile语法 05】动静态库编译链接
  • JS - 处理元素滚动
  • JavaScript滚动事件
  • 4.0 Zookeeper Java 客户端搭建
  • C#既然数组长度不可改变,那么如何动态调整集合类型数组大小,以便添加或删除元素?
  • 3.1 Verilog 连续赋值
  • 【http】2、http request header Origin 属性、跨域 CORS、同源、nginx 反向代理、预检请求
  • LangChain pdf的读取以及向量数据库的使用
  • VUE学习——事件修饰符
  • 开放平台技术架构设计与实现的实战总结
  • 飞桨自然语言处理框架 paddlenlp的 trainer
  • SQL世界之命令语句Ⅲ
  • Snoop Version 2 Packet Capture File Format
  • 扩展说明: 指令微调 Llama 2
  • VUE 全局设置防重复点击
  • 备战蓝桥杯---动态规划(基础1)
  • CVE-2018-19518 漏洞复现
  • Python爬虫实战:抓取猫眼电影排行榜top100#4
  • Fiddler抓包工具之fiddler界面工具栏介绍