LOJ#100. 【模板】矩阵乘法
今天好像是模板的一天。
传送门
题意
给定矩阵$A,B$,求$A\times B$。
题解
不会矩阵乘法的请移步这里
好水啊
不过还是没有一次AC
都怪STL array
我代码里原先用了array<array<int, 501>,501>表示矩阵
结果后来。。。RE了
换成vector一切无毛病
上代码:
#include <bits/stdc++.h> using namespace std; typedef vector<vector<int> > Matrix; const int P = 1000000007; void yhx(int&x) { while(x<0) x+=P; x%=P; } Matrix MatrixMul(const Matrix &A, const Matrix &B, int n, int p, int m) { Matrix ret(n, vector<int>(m)); for (int i=0; i<n; i++) for (int j=0; j<m; j++) { ret[i][j] = 0; for (int k=0; k<p; k++) ret[i][j] = (1ll * A[i][k] * B[k][j] % P + ret[i][j]) % P,yhx(ret[i][j]); } return ret; } int main() { int n,m,p; scanf("%d%d%d", &n,&p,&m); Matrix A(n, vector<int>(p)), B(p, vector<int>(m)); for (int i=0; i<n; i++) for (int j=0; j<p; j++) scanf("%d", &A[i][j]),yhx(A[i][j]); for (int i=0; i<p; i++) for (int j=0; j<m; j++) scanf("%d", &B[i][j]),yhx(B[i][j]); Matrix ans = MatrixMul(A, B, n, p, m); for (int i=0; i<n; i++) {for (int j=0; j<m; j++) printf("%d ", ans[i][j]);puts("");} return 0; }