poj 3070 Fibonacci 矩阵快速幂
2015-05-05 14:23
295 查看
#include <cstdio> #include <cstring> using namespace std; #define M_H 2 #define M_L 2 typedef struct ma { int h, l; int a[M_H][M_L]; }ma; ma need, anser; void init() { need.h=2; need.l=2; anser.h=2; anser.l=2; need.a[0][0]=1; anser.a[0][0]=1; need.a[0][1]=1; anser.a[0][1]=0; need.a[1][0]=1; anser.a[1][0]=0; need.a[1][1]=0; anser.a[1][1]=1; } ma multi(ma a, ma b) { ma c; c.h=a.h; c.l=b.l; for(int i=0; i<c.h; i++) for(int j=0; j<c.l; j++) c.a[i][j]=0; for(int i=0; i<c.h; i++){ for(int j=0; j<c.l; j++){ int ans=0; for(int k=0; k<a.h; k++){ ans += (a.a[i][k] * b.a[k][j])%10000; } c.a[i][j]=ans%10000; } } return c; } int main() { int m; while( scanf("%d", &m) != -1 ){ if(m==-1) break; init(); while(m>0){ if(m&1){ anser = multi(anser, need); } need = multi(need, need); m = m>>1; } printf("%d\n", anser.a[0][1]%10000); } return 0; }
相关文章推荐
- POJ 3070 Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- poj3070 Fibonacci (矩阵快速幂)
- POJ 3070 Fibonacci(快速幂矩阵)
- Poj 3070 Fibonacci (矩阵快速幂)
- POJ 3070 Fibonacci (矩阵快速幂)
- POJ 3070 - Fibonacci (矩阵快速幂)
- poj 3070 Fibonacci(矩阵快速幂)
- 【POJ 3070】Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(快速幂矩阵)
- POJ 3070 Fibonacci 矩阵快速幂
- POJ 3070 Fibonacci 矩阵快速幂
- [POJ](3070)Fibonacci ---矩阵快速幂与斐波那契
- POJ 3070 Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci (矩阵快速幂)