斐波那契的矩阵快速幂
来源:互联网 发布:canbot 软件 编辑:程序博客网 时间:2024/06/05 18:47
斐波那契数列为例 an=an-1+an-2
我们的目的是通过矩阵乘法,求得斐波那契数列的第n项,为了得到这个结果,我们还需要由[an-2 an-1]推得[an-1 an]
我们设[an-2an-1]为矩阵A,因为A1×2B2×2=C1×2,所以C与A是同规模的矩阵
代码(来自CHC大神)
#include <cstdio>using namespace std;#define N 2#define MOD 10000//斐波那契的矩阵快速幂// a = a * bvoid matric_mul(int a[][N],int b[][N]){int i,j,k; int tmp[N][N]={0};for(i=0;i<N;i++){for(j=0;j<N;j++){for(k=0;k<N;k++){tmp[i][j] = (tmp[i][j]+a[i][k]*b[k][j]);}}}for(i=0;i<N;i++){for(j=0;j<N;j++){a[i][j] = tmp[i][j];}}}int quickpow(int n){ //int ans=1,tmp=base; int ans[2][2]={{1,0},{0,1}}; int tmp[2][2]={{0,1},{1,1}}; while(n){ if(n&1)matric_mul(ans,tmp); matric_mul(tmp,tmp); n>>=1; } for(int i=0;i<N;i++){for(int j = 0;j<N;j++)printf("%d\t",ans[i][j]);printf("\n"); } return ans[0][1];}int main(){ int n; while(~scanf("%d",&n)&&n!=-1) printf(" f[%d] = %d\n",n,quickpow(n)); return 0;}
0 0
- 斐波那契的矩阵快速幂
- 菲波那契数列的快速幂矩阵求法
- 矩阵链乘+斐波那契+快速幂 专题
- ccsu 1042 斐波那契II 矩阵快速幂
- hdu3117(斐波那契数列+矩阵快速幂)
- 矩阵快速幂 斐波那契数列
- EOJ 1499 【斐波那契数列】【矩阵快速幂】
- hdu4549 M斐波那契数列(矩阵快速幂)
- hihoCoder1143 DP 斐波那契数列矩阵快速幂
- POJ3070 斐波那契矩阵快速幂
- nod51-1242斐波那契数列-矩阵快速幂
- 斐波那契数列矩阵快速幂
- 斐波那契数列 打表+矩阵快速幂
- 【矩阵快速幂】 斐波那契数列求解。
- AOJ 396 矩阵快速幂 + 斐波那契素数
- 斐波那契数列(矩阵快速幂)
- *矩阵快速幂(斐波那契数列模板)
- 矩阵快速幂(斐波那契数列)
- python 启动提示IDLE's subprocess didn't make connection问题的解决方法
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——配置过程(三)
- FZU oj 1683 纪念SlingShot(矩阵快速幂)
- 使用 IDEA + Maven + Git 快速开发 Java Web 应用
- 南京邮电大学OJ——1061简单选择排序
- 斐波那契的矩阵快速幂
- Android中SQLiteOpenHelper类的onUPgrade()方法的作用
- 【cocos2d-x-3.1.1系列1】VS2012+win7(64)+cocos2d-x-3.1.1的新建工程、打开新建的工程
- 《C++ Primer Plus》学习笔记6
- A Bug's Life --- 种类并查集
- sql语句练习1
- Linux操作系统启动过程详解
- Largest Rectangle in a Histogram - HDU 1506 dp
- 设计模式-状态模式