#include <stdio.h>
// ans = x * y + z を計算する関数
void cal_array(int x[2][3], int y[3][2], int z[2][2], int ans[2][2]) {
int i, j, k;
// x * y を計算
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
ans[i][j] = 0;
for (k = 0; k < 3; k++) {
ans[i][j] += x[i][k] * y[k][j];
}
}
}
// z を加算
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
ans[i][j] += z[i][j];
}
}
}
int main(void) {
// 2x3 行列
int x[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
// 3x2 行列
int y[3][2] = {
{6, 5},
{4, 3},
{2, 1}
};
// 2x2 行列
int z[2][2] = {
{10, 6},
{4, 9}
};
int ans[2][2];
int i, j;
cal_array(x, y, z, ans);
// 出力
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBhbnMgPSB4ICogeSArIHog44KS6KiI566X44GZ44KL6Zai5pWwCnZvaWQgY2FsX2FycmF5KGludCB4WzJdWzNdLCBpbnQgeVszXVsyXSwgaW50IHpbMl1bMl0sIGludCBhbnNbMl1bMl0pIHsKICAgIGludCBpLCBqLCBrOwoKICAgIC8vIHggKiB5IOOCkuioiOeulwogICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgIGZvciAoaiA9IDA7IGogPCAyOyBqKyspIHsKICAgICAgICAgICAgYW5zW2ldW2pdID0gMDsKICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IDM7IGsrKykgewogICAgICAgICAgICAgICAgYW5zW2ldW2pdICs9IHhbaV1ba10gKiB5W2tdW2pdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8vIHog44KS5Yqg566XCiAgICBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CiAgICAgICAgZm9yIChqID0gMDsgaiA8IDI7IGorKykgewogICAgICAgICAgICBhbnNbaV1bal0gKz0geltpXVtqXTsKICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKHZvaWQpIHsKICAgIC8vIDJ4MyDooYzliJcKICAgIGludCB4WzJdWzNdID0gewogICAgICAgIHsxLCAyLCAzfSwKICAgICAgICB7NCwgNSwgNn0KICAgIH07CgogICAgLy8gM3gyIOihjOWIlwogICAgaW50IHlbM11bMl0gPSB7CiAgICAgICAgezYsIDV9LAogICAgICAgIHs0LCAzfSwKICAgICAgICB7MiwgMX0KICAgIH07CgogICAgLy8gMngyIOihjOWIlwogICAgaW50IHpbMl1bMl0gPSB7CiAgICAgICAgezEwLCA2fSwKICAgICAgICB7NCwgOX0KICAgIH07CgogICAgaW50IGFuc1syXVsyXTsKICAgIGludCBpLCBqOwoKICAgIGNhbF9hcnJheSh4LCB5LCB6LCBhbnMpOwoKICAgIC8vIOWHuuWKmwogICAgcHJpbnRmKCJhbnMgPSBcbiIpOwogICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgIGZvciAoaiA9IDA7IGogPCAyOyBqKyspIHsKICAgICAgICAgICAgcHJpbnRmKCIlNGQiLCBhbnNbaV1bal0pOwogICAgICAgIH0KICAgICAgICBwcmludGYoIlxuIik7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K