У математиці множення матриць або матричний добуток - це двійкова операція, яка виробляє матрицю з двох матриць. Визначення мотивоване лінійними рівняннями та лінійними перетвореннями на векторах, які мають численні застосування у прикладній математиці, фізиці та техніці. Більш детально, якщо A - матриця n × m, а B - матриця m × p, їх матричний продукт AB - це матриця n × p, в якій m записи в рядку A множать на m записи вниз a стовпці B і підсумовуються для створення запису AB. Коли дві лінійні перетворення представлені матрицями, то добуток матриці являє собою склад двох перетворень.
Джерело: Вікіпедія
Іншими словами, для множення двох матриць, наприклад:
1 2 3 1 4
2 3 4 × 3 1 =
3 4 5 4 6
Спочатку візьміть рядок номер 1 у першій матриці, стовпець №1 у другій матриці та помножте 1
на 1
, 2
на 3
та 3
на 4
.
1 × 1 = 1
2 × 3 = 6
3 × 4 = 12
Тепер додайте їх разом, щоб отримати ваш перший предмет:
1 2 3 1 4 19
2 3 4 × 3 1 =
3 4 5 4 6
Для другого числа в першому стовпці результату вам потрібно буде взяти рядок №2 замість номера рядка 1 і зробити те ж саме.
1 × 2 = 2
3 × 3 = 9
4 × 4 = 16
= 27
Після того, як ви виконаєте весь перший стовпець, результат виглядає приблизно так:
1 2 3 1 4 19
2 3 4 × 3 1 = 27
3 4 5 4 6 35
Тепер знову зробіть те саме, але візьміть другий стовпчик замість першого стовпця, у результаті чого:
1 2 3 1 4 19 24
2 3 4 × 3 1 = 27 35
3 4 5 4 6 35 46
Ваше завдання
Дано дві матриці (максимальні розміри 200х200), що містять числа в діапазоні від -10000 до 10000, де число стовпців на першому дорівнює кількості рядків на другому, помножимо перше на друге. (Множення матриці є некомутативним.)
Ви можете приймати введення та давати вихід у вигляді масиву масивів (або еквівалент), матриці (якщо ваша мова має такий формат) або рядка з рядком.
Ви не можете використовувати будь-які вбудовані модулі для множення матриць.
Тестові справи
1 2 1 2 3 4 5 13 16 19 22 25
3 4 × 6 7 8 9 10 = 27 34 41 48 55
5 6 41 52 63 74 85
2 3 3 5 15 13
3 4 × 3 1 = 21 19
5 3 11 27
1 3 1 3 7 15
9 3 × 2 4 = 15 39
1 -1000 -1999 -3997
Пам'ятайте, що це код-гольф , тому виграє код з найменшими байтами.