斐波那契数列的第N项(矩阵快速幂模板)
来源:互联网 发布:linux查系统配置 编辑:程序博客网 时间:2024/05/20 13:14
1242 斐波那契数列的第N项
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
收藏
关注
斐波那契数列的定义如下:
F(0) = 0
F(1) = 1
F(n) = F(n - 1) + F(n - 2) (n >= 2)
(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, ...)
给出n,求F(n),由于结果很大,输出F(n) % 1000000009的结果即可。
Input
输入1个数n(1 <= n <= 10^18)。
Output
输出F(n) % 1000000009的结果。
Input示例
11
Output示例
89
#include <bits/stdc++.h>using namespace std;typedef long long LL;const int mod=1000000009;struct mx{ LL a[2][2];};mx solve(mx a,mx b){ mx c; for(int i=0; i<2; i++) for(int j=0; j<2; j++) { c.a[i][j]=0; for(int k=0; k<2; k++) { c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j]%mod)%mod; } } return c;}mx qpow(mx t,LL n){ mx ans; ans.a[0][0]=ans.a[1][1]=1; ans.a[0][1]=ans.a[1][0]=0; while(n) { if(n&1) ans=solve(ans,t); n>>=1; t=solve(t,t); } return ans;}int main(){ LL n; scanf("%lld",&n); mx t= {1,1,1,0}; mx ans=qpow(t,n-1); printf("%lld\n",(ans.a[1][1]+ans.a[0][1])%mod); return 0;}
阅读全文
0 0
- 斐波那契数列的第N项(矩阵快速幂模板)
- 51nod 1242 斐波那契数列的第N项(矩阵快速幂)
- 51nod 1242 斐波那契数列的第N项 (矩阵快速幂)
- 【51Nod】1242 - 斐波那契数列的第N项(矩阵快速幂)
- 51nod 1242 斐波那契数列的第N项(矩阵快速幂)
- 51Nod-斐波那契数列的第N项(矩阵快速幂)
- 1242 斐波那契数列的第N项(矩阵快速幂)
- 1242 斐波那契数列的第N项(矩阵快速幂)
- 斐波那契数列的第N项(1≤n≤10^18 矩阵快速幂)
- 51nod 1242 斐波那契数列的第N项【矩阵快速幂】
- 矩阵快速幂1242斐波那契数列的第N项
- 斐波那契数列的第N项 矩阵快速幂
- 【51NOD1242】斐波那契数列的第N项(矩阵快速幂)
- [51NOD]-1242 斐波那契数列的第N项 [矩阵快速幂]
- 51 nod 1242 斐波那契数列的第N项 矩阵快速幂
- 51Nod 1242 斐波那契数列的第N项(矩阵快速幂)
- *矩阵快速幂(斐波那契数列模板)
- 1242 斐波那契数列的第N项 运用矩阵快速幂来求解斐波那契数列问题
- c++11新标准 decltype
- [vijos 1333]Cantor表
- 动态设置rem
- largest number
- dll和lib区别联系
- 斐波那契数列的第N项(矩阵快速幂模板)
- 最长递增子序列 (dp)
- apk减小最好用的最实际的操作
- 自定义SeekBar分段显示并填充数据pop显示当前选中位置
- java.net.BindException: 地址已在使用
- 常用PHP array数组函数
- [RevitSDK解读]UIAPI->PreviewModel:在自己的界面显示Revit视图
- Anaconda TensorFlow安装(Windows10 64位 gpu) 完整版(大马哈鱼)
- 流程的Python 第十一章:接口:从协议到抽象基类