检查进行矩阵乘法时取模有没有取干净。
错误示范:
mat operator * (mat a,mat b){
mat c={0,0,0,0,0,0,0,0,0};
for(int i=1;i<maxn;i++){
for(int k=1;k<maxn;k++){
for(int j=1;j<maxn;j++){
c.a[i][j]+=a.a[i][k]*b.a[k][j])%mod;
}
}
}
return c;
}
正确代码:
mat operator * (mat a,mat b){
mat c={0,0,0,0,0,0,0,0,0};
for(int i=1;i<maxn;i++){
for(int k=1;k<maxn;k++){
for(int j=1;j<maxn;j++){
c.a[i][j]+=(a.a[i][k]*b.a[k][j])%mod;
c.a[i][j]%=mod;
}
}
}
return c;
}