矩阵 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 cpy