矩阵快速幂 模板
Posted 奋斗の小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了矩阵快速幂 模板相关的知识,希望对你有一定的参考价值。
在矩阵快速幂中要注意可以把两个矩阵化为同大小的时候运算
#include<iostream> #include<cstring> #include<cstdio> using namespace std; const int MAX_N=62; int n; struct JuZhen { int m[MAX_N][MAX_N]; }a,b; JuZhen Mul(JuZhen x,JuZhen y) { JuZhen sum; memset(sum.m,0,sizeof(sum.m)); for(int k=0;k<n;k++) { for(int i=0;i<n;i++) { if(!x.m[i][k]) continue; for(int j=0;j<n;j++) { sum.m[i][j]=(sum.m[i][j]+x.m[i][k]*y.m[k][j]); } } } return sum; } JuZhen fastm(JuZhen a,int b) { JuZhen s; memset(s.m,0,sizeof(s.m)); for(int i=0;i<n;i++) { s.m[i][i]=1; } while(b) { if(b&1) s=Mul(s,a); a=Mul(a,a); b=b>>1; } return s; } int main() { memset(a.m,0,sizeof(b.m)); memset(b.m,0,sizeof(b.m)); cin>>n; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cin>>a.m[i][j]; } } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cin>>b.m[i][j]; } } }
以上是关于矩阵快速幂 模板的主要内容,如果未能解决你的问题,请参考以下文章