1.矩阵乘法
(1)矩阵乘法的条件:如A*B
则必须 A的列=B的行
模板
vector<vector<int>> multiply(vector<vector<int>>& a, vector<vector<int>>& b) {
int n = a.size();
int m = b[0].size();
int k = a[0].size();
vector<vector<int>> ans(n, vector<int>(m, 0));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
for (int c = 0; c < k; c++) {
ans[i][j] += a[i][c] * b[c][j];
}
}
}
return ans;
}
矩阵快速幂模板:
vector<vector<int>> power(vector<vector<int>>& m, int p) {
int n = m.size();
//一定是正方型
vector<vector<int>> ans(n, vector<int>(n, 0));
for (int i = 0; i < n; i++) {
ans[i][i] = 1;
}//把对角线设置为1 单位矩阵 矩阵n * 单位矩阵=矩阵n
for (; p != 0; p >>= 1) {
if ((p & 1) != 0) {
ans = multiply(ans, m);
}
m = multiply(m, m);
}
return ans;
}