#include <stdio.h>
#define N 2
void array_mul(int (*x_ptr)[N], int (*y_ptr)[N], int (*ans_ptr)[N]) {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
ans_ptr[i][j] = 0;
for (int k = 0; k < N; k++) {
ans_ptr[i][j] += x_ptr[i][k] * y_ptr[k][j];
}
}
}
}
int main(void) {
// 2次元配列 x と y の定義 (2x2行列)
int x[N][N] = {
{1, 2},
{3, 4}
};
int y[N][N] = {
{1, 2},
{3, 4}
};
int ans[N][N];
array_mul(x, y, ans);
printf("---行列 x と y の積の結果 ---\n"); for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIE4gMgoKCnZvaWQgYXJyYXlfbXVsKGludCAoKnhfcHRyKVtOXSwgaW50ICgqeV9wdHIpW05dLCBpbnQgKCphbnNfcHRyKVtOXSkgewogICAgCiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgeyAKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IE47IGorKykgeyAKICAgICAgICAgICAgYW5zX3B0cltpXVtqXSA9IDA7IAogICAgICAgICAgICAKICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBOOyBrKyspIHsgCiAgICAgICAgICAgICAgICBhbnNfcHRyW2ldW2pdICs9IHhfcHRyW2ldW2tdICogeV9wdHJba11bal07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKHZvaWQpIHsKICAgIC8vIDLmrKHlhYPphY3liJcgeCDjgaggeSDjga7lrprnvqkgKDJ4MuihjOWIlykKICAgIGludCB4W05dW05dID0gewogICAgICAgIHsxLCAyfSwKICAgICAgICB7MywgNH0KICAgIH07CiAgICAKICAgIGludCB5W05dW05dID0gewogICAgICAgIHsxLCAyfSwKICAgICAgICB7MywgNH0KICAgIH07CgogICAgaW50IGFuc1tOXVtOXTsKCiAgIAogICAgYXJyYXlfbXVsKHgsIHksIGFucyk7CgogICAgcHJpbnRmKCItLS3ooYzliJcgeCDjgaggeSDjga7nqY3jga7ntZDmnpwgLS0tXG4iKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBOOyBqKyspIHsKICAgICAgICAgICAgcHJpbnRmKCIlNGQiLCBhbnNbaV1bal0pOwogICAgICAgIH0KICAgICAgICBwcmludGYoIlxuIik7IAogICAgfQoKICAgIHJldHVybiAwOwp9