矩阵乘法模板
// 模板矩阵
LL A[10][10] = {
};
struct Matrix {
void mul(LL a[10][10], LL b[10][10], LL c[10][10]) {
LL tmp[10][10] {};
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
for (int k = 0; k < n; ++k) {
tmp[i][j] = (tmp[i][j] + a[i][k] * b[k][j]) % P;
}
}
}
memcpy(c, tmp, sizeof tmp);
}
void qmi(LL f[10][10], LL n) {
while (n) {
if (n & 1) {
mul(A, f, f);
}
mul(A, A, A);
n >>= 1;
}
}
int n; // 矩阵大小
Matrix(int sz): n(sz) {};
};

浙公网安备 33010602011771号