关于矩阵乘法
  • 板块灌水区
  • 楼主ka_da_Duck
  • 当前回复6
  • 已保存回复6
  • 发布时间2024/8/2 10:21
  • 上次更新2024/8/2 11:24:58
查看原帖
关于矩阵乘法
1088058
ka_da_Duck楼主2024/8/2 10:21

rt,模板的两个矩阵相乘。我将其封装后就死循环了,数组开到 3×33\times 3 就不死循环,但是没看出来哪里错了(晕

#include <bits/stdc++.h>
#define int long long

using namespace std;
const int maxn = 5e2 + 10, mod = 1e9 + 7;

int n, p, m;

struct Mat {
	int a[maxn][maxn];
	Mat() {memset(a, 0, sizeof a);}
	friend Mat operator * (const Mat &A, const Mat &B) {
		Mat C;
		for (int k = 1; k <= p; ++k) 
			for (int i = 1; i <= n; ++i) 
				for (int j = 1; j <= m; ++j) 
					C.a[i][j] = (C.a[i][j] + A.a[i][k] * B.a[k][j]) % mod;
		return C;
	}
}A, B;

signed main() {
	ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
	cin >> n >> p >> m;
	for (int i = 1; i <= n; ++i) 
		for (int j = 1; j <= p; ++j) cin >> A.a[i][j];
	for (int i = 1; i <= p; ++i)
		for (int j = 1; j <= m; ++j) cin >> B.a[i][j];
	A = A * B;
	for (int i = 1; i <= n; ++i) {
		for (int j = 1; j <= m; ++j) cout << A.a[i][j] << ' ';
		cout << '\n';
	}
}

2024/8/2 10:21
加载中...