矩阵快速幂比较好的写法
2017-08-29 14:48
141 查看
#include <cstdio> #include <iostream> #include <string.h> #include <queue> #include <algorithm> typedef long long int lli; using namespace std; #define N 3 const lli mod = 1e9+7;//注意这里要是没有const会慢3~4倍。 struct mat{ lli mat ; }; mat operator *(mat &a,mat &b){ mat c; memset(c.mat,0,sizeof(c.mat)); for(int k = 0;k<N;++k){ for(int i = 0;i<N;++i){ for(int j=0;j<N;++j){ c.mat[i][j] += a.mat[i][k]*(b.mat[k][j] % mod) % mod; } } } return c; } mat qp(mat a,lli k){ mat c; for(int i=0;i<N;i++) for(int j =0;j<N;j++) c.mat[i][j] = (i==j); for(;k;k>>=1){ if(k&1) c=c*a; a = a*a; } return c; } int main(){ int t; cin>>t; lli n; while(t--){ scanf("%lld",&n); if(n == 1){ printf("1\n"); continue; } mat a = {1,1,0,0,0,1,1,0,0}; mat b = {6,4,3,0,0,0,0,0,0}; a = qp(a,n-2); b = b * a; printf("%lld\n",b.mat[0][2] % mod); } }
相关文章推荐
- 矩阵快速幂的写法(模板)
- poj3233Matrix Power Series(矩阵快速幂,两种写法)
- hdu 4920 快速矩阵相乘 以后得换一种写法了
- HDU5015 - 233 Matrix - 思维+矩阵快速幂
- [luoguP3390]【模板】矩阵快速幂
- 矩阵快速幂 与快速幂的求解
- HDU 1757 矩阵快速幂
- HDU 5895 Mathematician QSC (矩阵快速幂 + 逆元应用 + 指数循环节 + 欧拉函数)
- hdu5895 Mathematician QSC(矩阵快速幂+逆元+降幂)
- 快速排序partition的写法
- 矩阵快速幂
- 矩阵快速幂模板
- POJ 3233 Matrix Power Series 矩阵快速幂+二分
- 51nod 1137 矩阵乘法(矩阵快速乘法)
- hdu 1757 A Simple Math Problem(矩阵快速幂乘法)
- poj 3734 方块涂色 求红色 绿色方块都为偶数的方案数 (矩阵快速幂)
- hdu1575 Tr A(矩阵快速幂)
- HDU 4291:A Short problem_成都赛区网络赛—矩阵快速幂
- poj3070Fibonacci 矩阵快速幂
- hdu 2604(矩阵快速幂)