矩阵乘法模板类
cpp
template<int X,int Y>
struct Matrix{
LL a[X][Y];
Matrix(){
memset(a,0,sizeof a);
}
void set(const vector<vector<int>> &v){
for(int i=0;i<X;i++){
for(int j=0;j<Y;j++)a[i][j]=v[i][j];
}
}
template<int _X,int _Y>
Matrix<X,_Y> operator*(const Matrix<_X,_Y> &t){
Matrix<X,_Y> res;
for(int k=0;k<Y;k++){
for(int i=0;i<X;i++){
for(int j=0;j<_Y;j++)res.a[i][j]+=a[i][k]*t.a[k][j];
}
}
return res;
}
Matrix<X,Y> operator+(const Matrix<X,Y> &t){
Matrix<X,Y> res;
for(int i=0;i<X;i++){
for(int j=0;j<Y;j++)res.a[i][j]=a[i][j]+t.a[i][j];
}
return res;
}
};