矩阵乘法
一个可用性强的板子
struct matrix{
int n,m,a[5][5];
matrix () {n=m=0; memset(a,0,sizeof(a));} //空矩阵
matrix (int k) {n=m=k; memset(a,0,sizeof(a)); for(re int i=1;i<=k;i++) a[i][i]=1;} //单位矩阵
matrix operator *(const matrix &b) const{
matrix c;c.n=n,c.m=b.m;
for(re int i=1;i<=n;i++)
for(re int j=1;j<=b.m;j++)
for(re int k=1;k<=m;k++) c.a[i][j]=(c.a[i][j]+a[i][k]*b.a[k][j]%mod)%mod;
return c;
} //矩阵乘法
};