【模板】矩陣乘法
阿新 • • 發佈:2018-11-26
template<int x, int y> struct matrix { int s[x][y]; matrix() {memset(s, 0, sizeof(s));} matrix(int a[x][y]) {memcpy(s, a, sizeof(a));} int* operator [] (int p) {return s[p];} template<int xy> matrix<x, xy> operator * (const matrix<y, xy> a)const { matrix<x, xy>c; for(int i = 0; i < x; i ++) for(int j = 0; j < xy; j ++) for(int k = 0; k < y; k ++) c[i][j] += s[i][k] * a[k][j]; return c; } template<int xy> matrix<x, xy> mul(const matrix<y, xy> a, const int mod)const { matrix<x, y>c; for(int i = 0; i < x; i ++) for(int j = 0; j < xy; j ++) for(int k = 0; k < y; k ++) c[i][j] += s[i][k] * a[k][j], c[i][j] %= mod; return c; } };