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

斐波那契数列【牛客tracker 每日一题】

斐波那契数列

时间限制:1秒 空间限制:256M

知识点
递归
基础数学

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

斐波那契数列(Fibonacci Sequence)定义如下:

给定一个正整数k kk,请你输出F k F_kFk的值。由于这个结果可能很大,你只需要输出这个结果对( 10 9 + 7 ) (10^9+7)(109+7)取模后的结果即可。

输入描述:

在一行上输入一个整数k ( 1 ≦ k ≦ 10 6 ) k(1≦k≦10^6)k(1k106)

输出描述:

输出一个整数,表示F k m o d ( 10 9 + 7 ) F_k \mod\ (10^9+7)Fkmod(109+7)的值。

示例1

输入:

19

输出:

4181

解题思路

本题采用矩阵快速幂高效计算斐波那契数列第k kk项,核心是将斐波那契递推式转化为矩阵幂运算:斐波那契递推式F i = F i − 1 + F i − 2 F_i=F_{i-1}+F_{i-2}Fi=Fi1+Fi2可表示为矩阵乘法[ F i F i − 1 ] = [ 1 1 1 0 ] i − 2 [ F 2 F 1 ] \begin{bmatrix}F_i\\F_{i-1}\end{bmatrix} = \begin{bmatrix}1&1\\1&0\end{bmatrix}^{i-2} \begin{bmatrix}F_2\\F_1\end{bmatrix}[FiFi1]=[1110]i2[F2F1];先定义矩阵乘法和快速幂函数,初始化变换矩阵[ 1 1 1 0 ] \begin{bmatrix}1&1\\1&0\end{bmatrix}[1110],对其进行( k − 2 ) (k-2)(k2)次快速幂运算;最终通过矩阵结果计算F k = ( t m p [ 0 ] [ 1 ] + t m p [ 1 ] [ 1 ] ) m o d 1 e 9 + 7 F_k=(tmp[0][1]+tmp[1][1])\mod 1e9+7Fk=(tmp[0][1]+tmp[1][1])mod1e9+7。该方法时间复杂度为O ( log ⁡ k ) O(\log k)O(logk),远优于递推的O ( k ) O(k)O(k),适配k ≤ 10 6 k≤10^6k106的规模,通过矩阵快速幂大幅降低计算次数,精准得到斐波那契数取模后的结果。

总结

  1. 核心逻辑:将斐波那契递推转化为矩阵幂运算,利用快速幂降低时间复杂度。
  2. 关键操作:实现矩阵乘法和快速幂函数,对变换矩阵进行( k − 2 ) (k-2)(k2)次幂运算。
  3. 结果计算:通过矩阵幂结果推导F k F_kFk,并对1 e 9 + 7 1e9+71e9+7取模输出。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vt;typedefpair<ll,ll>pii;constll N=1e6+10;constll p=1e9+7;vtmul(vt a,vt b){vtres(a.size(),vector<ll>(b[0].size()));for(ll i=0;i<a.size();i++){for(ll j=0;j<b[0].size();j++){for(ll k=0;k<a[0].size();k++)res[i][j]=(res[i][j]+a[i][k]*b[k][j])%p;}}returnres;}vtqmi(vt a,ll b){vtres(a.size(),vector<ll>(a.size()));for(ll i=0;i<a.size();i++)res[i][i]=1;while(b){if(b&1)res=mul(res,a);a=mul(a,a);b>>=1;}returnres;}intmain(){ll k;cin>>k;if(k==1){cout<<1<<endl;return0;}vttmp(2,vector<ll>(2));tmp[1][0]=tmp[0][1]=tmp[1][1]=1;tmp=qmi(tmp,k-2);cout<<(tmp[0][1]+tmp[1][1])%p<<endl;return0;}
http://www.jsqmd.com/news/412044/

相关文章:

  • 2026年 镁铝合金压铸厂家推荐排行榜:电动车/汽车/医疗/光学/电池盒/低空飞行器/机器人/3D打印机结构件压铸,实力源头工厂精选 - 品牌企业推荐师(官方)
  • 过来人私藏分享:2026这三家执业药师网课才是真的靠谱! - 医考机构品牌测评专家
  • 2026年 制氮机厂家推荐排行榜,PSA制氮机/工业制氮机/移动式制氮机/膜分离制氮装置,技术革新与稳定供氮实力深度解析 - 品牌企业推荐师(官方)
  • 2026年 镁合金压铸厂家推荐排行榜:大型/超薄/半固态压铸,全制程加工与表面处理技术深度解析 - 品牌企业推荐师(官方)
  • Week 6
  • MATLAB 实现一维声子晶体相关计算:从传递矩阵法到能带图、响应图与弥散关系
  • 2026年 真空干燥设备厂家推荐榜单:双锥真空干燥机/实验室真空干燥箱/低温真空干燥箱/脉动真空干燥箱/防爆真空干燥箱,高效稳定与定制化解决方案深度解析 - 品牌企业推荐师(官方)
  • 让全球业务真正跑起来:以集成底座打通一体化运营
  • 2026年 特种金属换热器厂家推荐排行榜:钽/锆/钛/铌/镍材换热器,耐腐蚀耐高压工业级优选 - 品牌企业推荐师(官方)
  • AI视频生成:Wan 2.2(阿里通义万相)在华为昇腾下的部署?
  • Windows网卡相关命令
  • AI翻译与人工翻译对比解析:混合翻译如何实现高效视频本地化?
  • 2026 中国市场最受欢迎的十大AI招聘系统厂商盘点
  • 2026年 酶标仪厂家推荐排行榜,全自动/多功能/荧光/化学发光/全波长酶标仪,专业检测与高效分析仪器精选 - 品牌企业推荐师(官方)
  • 清理安装WPS后的右键新建菜单
  • 基于STM32单片机智能电表交流电压电流温湿度无线APP设计DIY25-231
  • SFP光笼子不只是“插座”:从结构到选型,一篇讲透这个高速接口的物理层基石
  • 提升eink开发效率:eink墨水屏库+演示系统
  • 2026年 铝合金压铸加工厂家推荐榜单:高强度/储能结构件/机加工/表面处理(电泳/阳极氧化/喷涂)一站式解决方案 - 品牌企业推荐师(官方)
  • Remix 会话管理深度解析
  • 2026公共卫生执医刷题题库深度解析:这三个靠谱题库值得推荐! - 医考机构品牌测评专家
  • MyBatis-Plus学习
  • AI 关键术语(简洁版)
  • 2026 执业西药师押考点卷哪家强?这份靠谱推荐带考生避开弯路! - 医考机构品牌测评专家
  • UE5C++(73):读取文件里的字节 FFileHelper::LoadFileToArray(TArray<uint8> Res, TCHAR* Filename, uint32 Flag=0)
  • 白酒行业破局者成义烧坊:“排队免单”如何重构百年的生意?
  • 闲置小额美通卡别浪费,回收变现轻松添零花 - 京顺回收
  • 2026年低预算代理记账公司深度评测:谁才是真正的性价比之选? - 品牌企业智选官
  • 如何 push
  • 2026年 洗板机厂家推荐排行榜:全自动/立式/智能洗板机,酶标/免疫/细胞洗板机专业品牌深度解析与选购指南 - 品牌企业推荐师(官方)