ITP1_7_D: Matrix Multiplication
行列の積 | プログラミング入門 | Aizu Online Judge
行列, の積を求める問題
行列の各要素は行列の行目の各要素と、行列の列目の各要素の積を合計したものです。
行列の行列を入れ替えた転置行列を用意すれば、行同士の演算で行列が求められます。
- 行列, を作成し、転置行列は
zip()
を使用し求めます。 - 次に、for文を使用し、行列の行
a
を取り出します。a
に対して、転置行列の行b
を取り出し、それぞれの要素を掛け合わせたものの合計を求め、結果をリストc
に格納します。 - 転置行列のすべての行
b
に対して同様の処理をし、c
を出力することで、行列の1行目を出力したことになります。 - これを、行列のすべての行
a
に対して同様の処理をすることで、行列を出力します。
解答
n, m, l = map(int, input().split()) matrix_A = [list(map(int, input().split())) for _ in range(n)] matrix_B = [list(map(int, input().split())) for _ in range(m)] matrix_B_transposed = list(map(list, zip(*matrix_B))) for a in matrix_A: c = [] for bt in matrix_B_transposed: c.append(sum(x * y for (x, y) in zip(a, bt))) print(*c)