/FPT002 - Nhân ba ma trận nhị nguyên
<Problem>
https://code.ptit.edu.vn/student/question/FPT002#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <math.h>
#define max(i, j) ((i > j) ? i : j)
#define min(i, j) ((i < j) ? i : j)
int main() {
int t;
//scanf("%d", &t);
t = 1;
while (t--) {
int m, n, p, q;
scanf("%d %d %d %d", &m, &n, &p, &q);
int arr[100][100];
int brr[100][100];
int crr[100][100];
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++) scanf("%d", &arr[i][j]);
for (int i = 0; i < n; i++)
for (int j = 0; j < p; j++) scanf("%d", &brr[i][j]);
for (int i = 0; i < p; i++)
for (int j = 0; j < q; j++) scanf("%d", &crr[i][j]);
int trr[100][100];
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) trr[i][j] = 0;
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
for (int k = 0; k < n; k++) {
trr[i][j] += arr[i][k] * brr[k][j];
}
}
}
int drr[100][100];
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) drr[i][j] = 0;
}
// t [m p] , c[p q]
for (int i = 0; i < m; i++) {
for (int j = 0; j < q; j++) {
for (int k = 0; k < p; k++) {
drr[i][j] += trr[i][k] * crr[k][j];
}
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < q; j++) {
printf("%d ", drr[i][j]);
}
printf("\n");
}
}
return 0;
}