矩阵快速幂模板
2017-05-30 17:06
417 查看
#include<map> #include<set> #include<queue> #include<stack> #include<vector> #include<math.h> #include<cstdio> #include<sstream> #include<numeric>//STL数值算法头文件 #include<stdlib.h> #include <ctype.h> #include<string.h> #include<iostream> #include<algorithm> #include<functional>//模板类头文件 using namespace std; typedef long long ll; const int maxn=20; const int INF=0x3f3f3f3f; const int mod=9973; int n,m; struct mat { int arr[maxn][maxn]; } str; mat mul(mat& A,mat& B) { mat res; memset(res.arr,0,sizeof(res.arr)); for(int i=0; i<n; i++) for(int j=0; j<n; j++) for(int k=0; k<n; k++) res.arr[i][j]=((res.arr[i][j]+A.arr[i][k]*B.arr[k][j])%mod+mod)%mod; return res; } mat pow(mat &A,int k) { mat M; memset(M.arr,0,sizeof(M.arr)); for(int i=0; i<n; i++) M.arr[i][i]=1; while(k) { if(k&1) M=mul(M,A); A=mul(A,A); k>>=1; } return M; } int main() { int t; scanf("%d",&t); while(t--) { scanf("%d %d",&n,&m); for(int i=0; i<n; i++) for(int j=0; j<n; j++) scanf("%d",&str.arr[i][j]); int sum=0; str=pow(str,m); for(int i=0; i<n; i++) sum+=str.arr[i][i]; printf("%d\n",sum%mod); } return 0; }
相关文章推荐
- 矩阵快速幂的写法(模板)
- 矩阵快速幂模板
- POJ3070:Fibonacci(矩阵快速幂模板题)
- 快速幂和矩阵快速幂-模板
- 矩阵快速幂模板
- 快速幂模板(数+矩阵)
- 【矩阵快速幂】HDU1575Tr A【模板】
- Fibonacci----poj3070(矩阵快速幂, 模板)
- 模板【洛谷P3390】 【模板】矩阵快速幂
- 洛谷 P3390 矩阵快速幂模板
- HDU1575[矩阵快速幂]模板
- hdu 5411 多校——矩阵快速幂模板
- hdu 1005 矩阵快速幂模板题
- 矩阵快速幂模板
- luogu P3390 【模板】矩阵快速幂
- 【模板】矩阵快速幂
- 洛谷 P3390 【模板】矩阵快速幂
- 矩阵快速幂模板
- POJ 3070 Fibonacci 【矩阵快速幂取模 (模板)】
- 矩阵快速幂模板