POJ 3070 矩阵快速幂求斐波那契数列
来源:互联网 发布:淘宝游戏点卡货源 编辑:程序博客网 时间:2024/05/17 00:10
方法一:矩阵快速幂取模求斐波那契数列
#include<iostream>#include<cstdio>#define maxn 10000using namespace std;struct Matrix{ int v[2][2];}m;Matrix Mul(Matrix A,Matrix B){ Matrix c; c.v[0][0]=(A.v[0][0]*B.v[0][0]+A.v[0][1]*B.v[1][0])%maxn; c.v[0][1]=(A.v[0][0]*B.v[0][1]+A.v[0][1]*B.v[1][1])%maxn; c.v[1][0]=(A.v[1][0]*B.v[0][0]+A.v[1][1]*B.v[1][0])%maxn; c.v[1][1]=(A.v[1][0]*B.v[0][1]+A.v[1][1]*B.v[1][1])%maxn; return c;}Matrix mtPow(Matrix A,int k){ if(k==1) return m; Matrix b=mtPow(A,k/2); if(k%2) return Mul(Mul(b,b),m); return Mul(b,b);}int main(){ int n; m.v[0][0]=1; m.v[0][1]=1; m.v[1][0]=1; m.v[1][1]=0; while(scanf("%d",&n)&&n!=-1) { if(n==0) { printf("0\n"); continue; } Matrix u; u=mtPow(m,n); printf("%d\n",u.v[0][1]); } return 0;}方法二:
这个代码是从网上找到的,但是感觉特别适用,尽管现在有几个地方我还不是特别理解,所以先贴进
来,以后慢慢懂。
# include <stdio.h>#include<string.h># define MAXN 30# define MOD 10000short int power[MAXN][4] = {{1,1,1,0}};short int ans[4];void mul(short int *a, short int *b, short int *c);int main() { int n, i; for (i = 1; i < MAXN; ++i) mul(power[i], power[i-1], power[i-1]); while(~scanf("%d",&n)) { ans[0] = ans[3] = 1; ans[1] = ans[2] = 0; if (n == -1) break; for (i = 0; i < MAXN; ++i) if (n & (0x1<<i)) mul(ans, ans, power[i]); printf("%d\n", ans[1]); } return 0; }void mul(short int *a, short int *b, short int *c){ short int t[4]; t[0] = (b[0]*c[0] + b[1]*c[2]) % MOD; t[1] = (b[0]*c[1] + b[1]*c[3]) % MOD; t[2] = (b[2]*c[0] + b[3]*c[2]) % MOD; t[3] = (b[2]*c[1] + b[3]*c[3]) % MOD; memcpy(a, t, sizeof(t));}
- POJ 3070 矩阵快速幂求斐波那契数列
- POJ 3070-Fibonacci(矩阵快速幂求斐波那契数列)
- poj 3070 Fibonacci (矩阵快速幂求斐波那契数列的第n项)
- 利用矩阵快速幂求斐波那契数列
- 矩阵快速幂求斐波那契数列 poj3070
- 矩阵快速幂求斐波那契数列
- 矩阵快速幂求斐波那契数列
- 矩阵快速幂求斐波那契数列
- 矩阵快速幂求斐波那契数列
- 用矩阵快速幂求斐波那契数列
- 矩阵快速幂求斐波那契数列
- POJ 3070 (矩阵快速幂,矩阵快速幂求斐波那契)
- POJ - 3070 - Fibonacci (矩阵快速幂 + 斐波那契数列)
- poj 3070-Fibonacci (矩阵快速幂 求 斐波那契数列)
- poj-3070 Fibonacci(矩阵快速幂 + 斐波那契数列)
- POJ 3070 (矩阵快速幂 ——斐波那契数列)
- 矩阵快速幂优化递推式 例:斐波那契数列 poj 3070
- POJ 3070 斐波那契数列(矩阵快速幂(版题))
- 2013-11-06 实验之趣味110算式(递归求解思维)
- 北大ACM 1005 AC了 欢迎查阅
- kamailio/opensips snmp/cacti/zabbix监控
- original-package
- archlinux安装流程
- POJ 3070 矩阵快速幂求斐波那契数列
- 玩家就是宇宙,而你就是那个玩家——谈Minecraft
- 编译VTK的MFC库
- C#全局键盘钩子
- Android NDK: ERROR: You NDK_MODULE_PATH variable contains spaces
- 二叉树的先序遍历 Binary Tree Preorder Traversal
- jQuery操作<input type="radio">
- hdu 2845
- 用单链表解约瑟夫环问题!