#include <stdio.h>
#include <stdlib.h>
// 行列の掛け算を行う関数 (C = A * B)
void multiply_matrices(int rows, int cols, double **A, double **B, double **C) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
C[i][j] = 0;
for (int k = 0; k < cols; k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
}
int main() {
int rows, cols;
// 1. 行数と列数の読み込み
if (scanf("%d %d", &rows
, &cols
) != 2) return 1; printf("指定サイズ: %d行 %d列\n", rows
, cols
);
// 2. メモリ確保 (行列A, A^2, A^3 用の3つを用意)
double **A
= (double **)malloc(rows
* sizeof(double *)); double **A2
= (double **)malloc(rows
* sizeof(double *)); double **A3
= (double **)malloc(rows
* sizeof(double *)); for (int i = 0; i < rows; i++) {
A
[i
] = (double *)malloc(cols
* sizeof(double)); A2
[i
] = (double *)malloc(cols
* sizeof(double)); A3
[i
] = (double *)malloc(cols
* sizeof(double)); }
// 3. 各要素に数値を読み込む
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (scanf("%lf", &A
[i
][j
]) != 1) return 1; }
}
// 4. 【一つ目の課題】入力された2次元配列を表示
printf("\n--- 入力された2次元配列 (行列A) ---\n"); for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
}
}
// 5. 【二つ目の課題】行列の3乗を計算
// A^2 = A * A
multiply_matrices(rows, cols, A, A, A2);
// A^3 = A^2 * A
multiply_matrices(rows, cols, A2, A, A3);
// 6. 計算結果 (A^3) の表示
printf("\n--- 行列の3乗 (A^3) の計算結果 ---\n"); for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
}
}
// 7. メモリ解放
for (int i = 0; i < rows; i++) {
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vIOihjOWIl+OBruaOm+OBkeeul+OCkuihjOOBhumWouaVsCAoQyA9IEEgKiBCKQp2b2lkIG11bHRpcGx5X21hdHJpY2VzKGludCByb3dzLCBpbnQgY29scywgZG91YmxlICoqQSwgZG91YmxlICoqQiwgZG91YmxlICoqQykgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvbHM7IGorKykgewogICAgICAgICAgICBDW2ldW2pdID0gMDsKICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBjb2xzOyBrKyspIHsKICAgICAgICAgICAgICAgIENbaV1bal0gKz0gQVtpXVtrXSAqIEJba11bal07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW50IHJvd3MsIGNvbHM7CgogICAgLy8gMS4g6KGM5pWw44Go5YiX5pWw44Gu6Kqt44G/6L6844G/CiAgICBpZiAoc2NhbmYoIiVkICVkIiwgJnJvd3MsICZjb2xzKSAhPSAyKSByZXR1cm4gMTsKICAgIHByaW50Zigi5oyH5a6a44K144Kk44K6OiAlZOihjCAlZOWIl1xuIiwgcm93cywgY29scyk7CgogICAgLy8gMi4g44Oh44Oi44Oq56K65L+dICjooYzliJdBLCBBXjIsIEFeMyDnlKjjga4z44Gk44KS55So5oSPKQogICAgZG91YmxlICoqQSA9IChkb3VibGUgKiopbWFsbG9jKHJvd3MgKiBzaXplb2YoZG91YmxlICopKTsKICAgIGRvdWJsZSAqKkEyID0gKGRvdWJsZSAqKiltYWxsb2Mocm93cyAqIHNpemVvZihkb3VibGUgKikpOwogICAgZG91YmxlICoqQTMgPSAoZG91YmxlICoqKW1hbGxvYyhyb3dzICogc2l6ZW9mKGRvdWJsZSAqKSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgewogICAgICAgIEFbaV0gPSAoZG91YmxlICopbWFsbG9jKGNvbHMgKiBzaXplb2YoZG91YmxlKSk7CiAgICAgICAgQTJbaV0gPSAoZG91YmxlICopbWFsbG9jKGNvbHMgKiBzaXplb2YoZG91YmxlKSk7CiAgICAgICAgQTNbaV0gPSAoZG91YmxlICopbWFsbG9jKGNvbHMgKiBzaXplb2YoZG91YmxlKSk7CiAgICB9CgogICAgLy8gMy4g5ZCE6KaB57Sg44Gr5pWw5YCk44KS6Kqt44G/6L6844KACiAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY29sczsgaisrKSB7CiAgICAgICAgICAgIGlmIChzY2FuZigiJWxmIiwgJkFbaV1bal0pICE9IDEpIHJldHVybiAxOwogICAgICAgIH0KICAgIH0KCiAgICAvLyA0LiDjgJDkuIDjgaTnm67jga7oqrLpoYzjgJHlhaXlipvjgZXjgozjgZ8y5qyh5YWD6YWN5YiX44KS6KGo56S6CiAgICBwcmludGYoIlxuLS0tIOWFpeWKm+OBleOCjOOBnzLmrKHlhYPphY3liJcgKOihjOWIl0EpIC0tLVxuIik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY29sczsgaisrKSB7CiAgICAgICAgICAgIHByaW50ZigiJWdcdCIsIEFbaV1bal0pOwogICAgICAgIH0KICAgICAgICBwcmludGYoIlxuIik7CiAgICB9CgogICAgLy8gNS4g44CQ5LqM44Gk55uu44Gu6Kqy6aGM44CR6KGM5YiX44GuM+S5l+OCkuioiOeulwogICAgLy8gQV4yID0gQSAqIEEKICAgIG11bHRpcGx5X21hdHJpY2VzKHJvd3MsIGNvbHMsIEEsIEEsIEEyKTsKICAgIC8vIEFeMyA9IEFeMiAqIEEKICAgIG11bHRpcGx5X21hdHJpY2VzKHJvd3MsIGNvbHMsIEEyLCBBLCBBMyk7CgogICAgLy8gNi4g6KiI566X57WQ5p6cIChBXjMpIOOBruihqOekugogICAgcHJpbnRmKCJcbi0tLSDooYzliJfjga4z5LmXIChBXjMpIOOBruioiOeul+e1kOaenCAtLS1cbiIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvbHM7IGorKykgewogICAgICAgICAgICBwcmludGYoIiVnXHQiLCBBM1tpXVtqXSk7CiAgICAgICAgfQogICAgICAgIHByaW50ZigiXG4iKTsKICAgIH0KCiAgICAvLyA3LiDjg6Hjg6Ljg6rop6PmlL4KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7CiAgICAgICAgZnJlZShBW2ldKTsgZnJlZShBMltpXSk7IGZyZWUoQTNbaV0pOwogICAgfQogICAgZnJlZShBKTsgZnJlZShBMik7IGZyZWUoQTMpOwoKICAgIHJldHVybiAwOwp9