矩阵
1.乘法
struct Matrix {
int n, m;
LL c[Maxn + 5][Maxn + 5];
Matrix () {
memset (c, 0, sizeof c); }
void Init () {
memset (c, 0, sizeof c);
for (int i = 1; i <= n; i++)
c[i][i] = 1;
}
};
Matrix operator * (Matrix x, Matrix y) {
Matrix ans; ans.n = x.n; ans.m = y.m;
for (int k = 1; k <= x.m; k++)
for (int i = 1; i <= ans.n; i++)
for (int j = 1; j <= ans.m; j++)
ans.c[i][j] = (ans.c[i][j] + x.c[i][k] * y.c[k][j] % Mod) % Mod;
return ans;
}
2.基本运算(+, -, *)
struct Matrix {
int n, m;
LL c[Maxn + 5][Maxn + 5];
Matrix () {
memset (c, 0, sizeof c); }
void init () {
for (int i = 0; i <= n; i++)
c[i][i] = 1;
}
void