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