#include <stdio.h>
void array_mul(int (*x)[2], int (*y)[2], int (*ans)[2])
{
int i, j, k;
/* 行列積 ans = x * y を計算 */
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
ans[i][j] = 0;
for (k = 0; k < 2; k++) {
ans[i][j] += x[i][k] * y[k][j];
}
}
}
}
int main(void)
{
int x[2][2] = {
{1, 2},
{3, 4}
};
int y[2][2] = {
{1, 2},
{3, 4}
};
int ans[2][2];
array_mul(x, y, ans);
/* 結果表示 */
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
printf("ans[%d][%d] = %d\n", i
, j
, ans
[i
][j
]); }
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIGFycmF5X211bChpbnQgKCp4KVsyXSwgaW50ICgqeSlbMl0sIGludCAoKmFucylbMl0pCnsKICAgIGludCBpLCBqLCBrOwoKICAgIC8qIOihjOWIl+epjSBhbnMgPSB4ICogeSDjgpLoqIjnrpcgKi8KICAgIGZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsKICAgICAgICBmb3IgKGogPSAwOyBqIDwgMjsgaisrKSB7CiAgICAgICAgICAgIGFuc1tpXVtqXSA9IDA7CiAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCAyOyBrKyspIHsKICAgICAgICAgICAgICAgIGFuc1tpXVtqXSArPSB4W2ldW2tdICogeVtrXVtqXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4odm9pZCkKewogICAgaW50IHhbMl1bMl0gPSB7CiAgICAgICAgezEsIDJ9LAogICAgICAgIHszLCA0fQogICAgfTsKCiAgICBpbnQgeVsyXVsyXSA9IHsKICAgICAgICB7MSwgMn0sCiAgICAgICAgezMsIDR9CiAgICB9OwoKICAgIGludCBhbnNbMl1bMl07CgogICAgYXJyYXlfbXVsKHgsIHksIGFucyk7CgogICAgLyog57WQ5p6c6KGo56S6ICovCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgMjsgaisrKSB7CiAgICAgICAgICAgIHByaW50ZigiYW5zWyVkXVslZF0gPSAlZFxuIiwgaSwgaiwgYW5zW2ldW2pdKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K