昨天上了线代第一节,突然想到kuangbin的矩阵系列可以开坑了
这是快速幂模板,思想跟快速幂一样,只不过是重载运算符*,使其变为矩阵乘法。
--
#include<bits/stdc++.h> using namespace std; const int mod=1e9+7; struct matrix{ long long c[101][101]; }a,e; long long n,k; matrix operator*(const matrix &x,const matrix &y) { matrix a; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) a.c[i][j]=0; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) for(int k=1;k<=n;k++) { a.c[i][j]+=x.c[i][k]*y.c[k][j]%mod; a.c[i][j]%=mod; } return a; } int main() { cin>>n>>k; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { cin>>a.c[i][j]; } for(int i=1;i<=n;i++) e.c[i][i]=1; while(k>0) { if(k%2==1) e=e*a; a=a*a; k>>=1; } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) cout<<e.c[i][j]<<" "; cout<<endl; } }