POJ 3070 Fibonacci 矩阵快速幂
来源:互联网 发布:windows怎么切换mac 编辑:程序博客网 时间:2024/05/16 01:38
题意很明确,求第m个斐波那契数MOD10000的结果
题目连矩阵都构造好了,就是
1 1
1 0
然后对这个求幂就行了
/*ID: sdj22251PROG: subsetLANG: C++*/#include <iostream>#include <vector>#include <list>#include <map>#include <set>#include <deque>#include <queue>#include <stack>#include <bitset>#include <algorithm>#include <functional>#include <numeric>#include <utility>#include <sstream>#include <iomanip>#include <cstdio>#include <cmath>#include <cstdlib>#include <cctype>#include <string>#include <cstring>#include <cmath>#include <ctime>#define MAXN 305#define INF 100000000#define eps 1e-7#define PI 3.1415926535898using namespace std;int n = 2, m;int tt[2][2]={{1, 1}, {1, 0}};struct wwj{ int r, c; int mat[3][3];} need, ready;void init(){ memset(need.mat, 0, sizeof(need.mat)); need.r = n; need.c = n; for(int i = 1; i <= n; i++) { need.mat[i][i] = 1; } ready.c = n; ready.r = n; for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) ready.mat[i][j] = tt[i - 1][j - 1]; }}wwj multi(wwj x, wwj y){ wwj t; int i, j, k; memset(t.mat, 0, sizeof(t.mat)); t.r = x.r; t.c = y.c; for(i = 1; i <= x.r; i++) { for(k = 1; k <= x.c; k++) if(x.mat[i][k]) { for(j = 1; j <= y.c; j++) { t.mat[i][j] += (x.mat[i][k] * y.mat[k][j]) % 10000; t.mat[i][j] %= 10000; } } } return t;}int main(){ int m; while(scanf("%d", &m) != EOF) { if(m == -1) break; init(); while(m) { if(m & 1) { need = multi(ready, need); } ready = multi(ready, ready); m = m >> 1; } printf("%d\n", need.mat[1][2] % 10000); } return 0;}
- POJ 3070 Fibonacci 矩阵快速幂
- poj - 3070 - Fibonacci(矩阵快速幂)
- 矩阵快速幂 Fibonacci 3070 poj
- POJ 3070 Fibonacci (矩阵快速幂)
- poj 3070 Fibonacci (矩阵快速幂)
- poj 3070 Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci 矩阵快速幂
- POJ 3070 Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci(矩阵快速幂)
- POJ-3070 Fibonacci 矩阵快速幂
- Fibonacci - POJ 3070 矩阵乘法快速幂
- poj 3070 Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci 矩阵快速幂
- POJ 3070 Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci 矩阵快速幂
- poj 3070 Fibonacci 【矩阵快速幂】
- POJ 3070 Fibonacci.(矩阵快速幂)
- SOAP 1.1
- 趣味算法-亲密数
- 真要配带眼镜吗?
- 创新工场的失败&我们应学到的经验——李开复
- gem ERROR: While executing gem ... (Zlib::GzipFile::Error)
- POJ 3070 Fibonacci 矩阵快速幂
- Java应用——精简jre体积
- 转 -- Singleton模式
- 2012年总结
- android图像绘制(一)——镜像问题
- Android学习笔记之ProgressDialog
- 01背包源码核心算法
- 使用maven创建appfuse
- 144D Missile Silos (data structures, graphs, shortest paths)