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

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

波斐契那数列

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

网页链接

牛客tracker

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

题目描述

定义数列a x {a_x}ax满足

a x = { 1 , x ∈ { 1 , 2 , 3 } ; a x − 1 + a x − 3 , x ≧ 4 a_x= \begin{cases} 1,\quad x∈\{1,2,3 \};\\ a_{x-1}+a_{x-3}, \quad x≧4 \end{cases}ax={1,x{1,2,3};ax1+ax3,x4

给定n nn,请求出a n m o d ( 10 9 + 7 ) a_n \mod (10^9+7)anmod(109+7)的值。

输入描述:

第一行输入整数T ( 1 ≦ T ≦ 100 ) T (1≦T≦100)T(1T100),表示询问数量。
接下来T TT行,每行一个整数n ( 1 ≦ n ≦ 2 × 10 9 ) n (1≦n≦2×10^9)n(1n2×109)

输出描述:

对于每个询问,在一行上输出a n a_nan的值(取模10 9 + 7 10^9+7109+7)。

示例1

输入:

3 6 8 10

输出:

4 9 19

解题思路

本题核心是通过矩阵快速幂求解高阶线性递推数列,将波斐契那数列的递推式a x = a x − 1 + a x − 3 a_x=a_{x-1}+a_{x-3}ax=ax1+ax3转化为矩阵幂运算:构造变换矩阵[ 1 0 1 1 0 0 0 1 0 ] \begin{bmatrix}1&0&1\\1&0&0\\0&1&0\end{bmatrix}110001100,使得[ a x a x − 1 a x − 2 ] = 变换矩阵 × [ a x − 1 a x − 2 a x − 3 ] \begin{bmatrix}a_x\\a_{x-1}\\a_{x-2}\end{bmatrix} = 变换矩阵 × \begin{bmatrix}a_{x-1}\\a_{x-2}\\a_{x-3}\end{bmatrix}axax1ax2=变换矩阵×ax1ax2ax3;定义矩阵乘法函数,实现快速幂运算以降低时间复杂度;对于输入的n nn,若n ≤ 3 n≤3n3直接返回1 11,否则对变换矩阵进行( n − 3 ) (n-3)(n3)次快速幂运算(代码中简化为( n − 1 ) (n-1)(n1)次),最终通过矩阵结果计算a n m o d 1 e 9 + 7 a_n \mod 1e9+7anmod1e9+7。该方法时间复杂度为O ( log ⁡ n ) O(\log n)O(logn),适配n ≤ 2 × 10 9 n≤2×10^9n2×109T ≤ 100 T≤100T100的规模,通过矩阵快速幂高效求解超大项的递推值。

总结

  1. 核心逻辑:将三阶线性递推转化为3 × 3 3×33×3矩阵乘法,利用快速幂将时间复杂度降至对数级。
  2. 关键操作:实现矩阵乘法和快速幂,通过矩阵幂运算推导递推数列的第n nn项。
  3. 边界处理:n ≤ 3 n≤3n3时直接返回初始值1 11,避免无效的矩阵运算。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vt;typedefpair<ll,ll>pii;constll N=1e6+10;constll p=1e9+7;voidmul(ll a[3][3],ll b[3][3]){ll c[3][3]={0};for(ll i=0;i<3;i++)for(ll j=0;j<3;j++)for(ll k=0;k<3;k++)c[i][j]=(c[i][j]+a[i][k]*b[k][j])%p;memcpy(a,c,sizeof(c));}llf(ll n){ll a[3][3]={1,0,1,1,0,0,0,1,0};ll res[3][3]={1,0,0,0,1,0,0,0,1};while(n){if(n&1)mul(res,a);mul(a,a);n>>=1;}returnres[0][0];}voidsolve(){ll n;cin>>n;if(n<=2)cout<<"1"<<endl;elsecout<<f(n-1)<<endl;}intmain(){ll T;cin>>T;while(T--)solve();return0;}
http://www.jsqmd.com/news/414355/

相关文章:

  • 2026年全国玻璃雨棚厂家哪家权威?实力强口碑好 适配各类建筑场景 - 深度智识库
  • 天虹超市购物卡别浪费,新手零基础操作方式全览 - 淘淘收小程序
  • 别再瞎找了!8个AI论文平台测评:本科生毕业论文+学术写作全攻略
  • 【Linux Input子系统】
  • 预测成功率超80%!康奈尔大学提出创新AI框架,解码高导电性锂离子电解质的化学机制
  • CF2203C Test Generator
  • A/B测试平台架构:支撑导购APP快速迭代的流量分发系统与数据反馈闭环
  • 闲置京东 e 卡别扔!线上线下的回收“暗战”,你选对了吗? - 可可收
  • 家装管理软件实测推荐(2026客观版) - GEO排行榜
  • 2.26 随机化
  • 探讨2026年POLO衫源头厂家,谁家产品性价比高 - myqiye
  • 放化疗后吃不下、难吸收?别硬扛!佰倍优救回脾胃元气 - 速递信息
  • 禹州市锐翔过滤设备联系方式:核心业务与联系信息说明 - 品牌推荐
  • 2026年评价高的橡胶接头公司推荐:316 不锈钢金属软管/万向铰链式波纹补偿器/丝扣橡胶接头/减震金属软管/选择指南 - 优质品牌商家
  • 2026年美国展会国内制作口碑十大品牌,附施工及搭建价格 - mypinpai
  • 万爱通礼品卡可以回收吗?使用范围与回收指南 - 团团收购物卡回收
  • P6KE24CA双向 TVS瞬态抑制二极管:24V电压600W功率防雷防静电瞬态抑制
  • kingbase备份与恢复实战(一)—— 备份体系、RPO-RTO与选型(Windows+ksql)
  • 重庆公立幼儿园找哪家,重庆高新区西城湖景幼儿园推荐指数高吗 - 工业品牌热点
  • 信息化需求收集
  • 黑客技术?没你想象的那么难!——dns劫持篇(dns劫持_DNS劫持_dns劫持怎么处理_dns劫持是什么意思_dns劫持是怎么回事,怎么处理_dns劫持异常怎么修复_是否遭到dns劫持_dns劫持)
  • 好写作AI | 多语言与多场景切换:好写作AI如何适配你的各种写作需求
  • 南京口碑好的婚礼服务品牌推荐,诺丁山婚礼艺术中心创意水平超赞 - 工业品网
  • 分期乐购物额度回收全解析:合规路径与避坑指南 - 可可收
  • 证书模板vue写法
  • 2026年高频处理优质厂家盘点,洪柏五金一站式服务受青睐 - 工业推荐榜
  • 微信立减金回收大揭秘:那些你不知道的“财富密码”与陷阱! - 可可收
  • 2026年背胶魔术贴厂家权威推荐榜:纱网魔术贴、背靠背魔术贴、防蚊类魔术贴、魔术贴绑带、冲型魔术贴、切片魔术贴选择指南 - 优质品牌商家
  • 2026年金三银四Java后端高频面试题总结
  • 2026对标PADS、Altium Designer与Cadence Allegro,国产高端PCB软件替代推荐 - 品牌2025