POJ 3070 (矩阵快速幂 ——斐波那契数列)
来源:互联网 发布:软件风险管理 编辑:程序博客网 时间:2024/06/06 08:33
题意:
求出斐波那契数列的第n项。
思路:
今天才知道斐波那契数列可以用矩阵求出,不过矩阵快速幂还是有很多写的方式
总结了一下,找出了自己比较喜欢的一种方式。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N=100;int n;int a[N][N];int tmp[N][N];int res[N][N];int mod = 10000;void multi(int a[][N],int b[][N],int n){ memset(tmp,0,sizeof tmp); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) for(int k=1;k<=n;k++) tmp[i][j]= (tmp[i][j] + a[i][k]*b[k][j])%mod; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) a[i][j]=tmp[i][j];}void Pow(int a[][N],int n){ memset(res,0,sizeof res); for(int i=1;i<=2;i++) res[i][i]=1; while(n) { if(n&1) //一般都知道矩阵的N*N的大小,这里是2 multi(res,a,2); //res=res*a;复制直接在multi里面实现了; multi(a,a,2); //a=a*a n>>=1; }}int main(){ //freopen("in.txt","r",stdin); while(scanf("%d",&n) != EOF) { a[1][1] = 1; a[1][2] = 1; a[2][1] = 1; a[2][2] = 0; if(n == -1) break; Pow(a,n); printf("%d\n",res[2][1]); } return 0;}
0 0
- POJ 3070 (矩阵快速幂 ——斐波那契数列)
- POJ - 3070 - Fibonacci (矩阵快速幂 + 斐波那契数列)
- poj 3070-Fibonacci (矩阵快速幂 求 斐波那契数列)
- poj-3070 Fibonacci(矩阵快速幂 + 斐波那契数列)
- 矩阵快速幂优化递推式 例:斐波那契数列 poj 3070
- POJ 3070 斐波那契数列(矩阵快速幂(版题))
- POJ 3070 矩阵快速幂求斐波那契数列
- POJ 3070-Fibonacci(矩阵快速幂求斐波那契数列)
- hdu4549——M斐波那契数列(费马小定理+矩阵快速幂)
- hdu3117(斐波那契数列+矩阵快速幂)
- 矩阵快速幂 斐波那契数列
- EOJ 1499 【斐波那契数列】【矩阵快速幂】
- hdu4549 M斐波那契数列(矩阵快速幂)
- hihoCoder1143 DP 斐波那契数列矩阵快速幂
- nod51-1242斐波那契数列-矩阵快速幂
- 斐波那契数列矩阵快速幂
- 斐波那契数列 打表+矩阵快速幂
- 【矩阵快速幂】 斐波那契数列求解。
- Unity5 Sprite 图集打包 AssetBundle 更新探索
- 【BZOJ 4008】【HNOI 2015】亚瑟王【概率与期望DP】
- ARC 070 D No Need DP
- 面向对象——Java的封装、继承和多态
- PopupWindow使用,添加简单上下动画
- POJ 3070 (矩阵快速幂 ——斐波那契数列)
- jQuery的版本变化带来的内容功能的变化总结
- 标注年龄性别人脸数据库
- mysql的timestamp,unix_time和时区问题
- 一篇非常好的Spring教程
- canvas简单直线代码
- python 删除/查找重复项
- orcale PLSQL客户端连接数库
- Mina工作原理分析