定义
struct mat{
ll a[10][10];
};
矩阵乘法
mat mul(mat x,mat y,int n){
mat m;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
m.a[i][j]=0;
for(int k=0;k<n;k++){
m.a[i][j]+=x.a[i][k]*y.a[k][j];
m.a[i][j]%=MOD;
}
}
}
return m;
}
矩阵快速幂
mat powmat(mat base,int n,ll exp){
mat ans=init(n);
while(exp){
if(exp&1)ans=mul(ans,base,n);
exp>>=1;
base=mul(base,base,n);
}
return ans;
}
打印矩阵
void printmat(mat m,int n){
printf("\n");
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)printf("%d ",m.a[i][j]);
printf("\n");
}
printf("\n");
}