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;
}

浙公网安备 33010602011771号