Problem1308--행렬의 곱 - HARD

1308: 행렬의 곱 - HARD

Time Limit: 2 Sec  Memory Limit: 8 MB
Submit: 78  Solved: 16
[Submit] [Status] [Web Board] [Creator:]

Description

MxK 행렬인 A와 KxN 행렬인 B 2개가 주어졌을 때 두 행렬의 곱인 A * B인 행렬 C 를 구하는 문제이다.
이때 행렬의 곱이므로, MxN 크기의 행렬이다.
M, N, K 의 크기는 최대 1이상, 100,000 이하이며, M+N+K < 200,000 이다.
행렬의 곱셈은 아래의 식 처럼 동작한다.
A의 값은 
1 2
3 4
B의 값이 아래와 같을 때
5 6
7 8
공식을 대입 하면 아래와 같다.
1*5 + 2*7, 1*6 + 2*8
3*5 + 4*7, 3*6 + 4*8 이므로
답은 
19, 22
43, 50 이 된다.

Input

첫번째 줄에는 행렬의 크기인 M, N, K 가 입력이 된다.
두번째 줄 이하 부터는 행렬의 값이 들어온다.
M, N, K의 값의 범위는 1 이상 100,000 이하이다.
각 행렬의 요소는 0 이상, 255 이하 이다.

Output

두 행렬의 곱한 결과를 출력한다.
행렬의 각 요소의 이론상 최대 값은 65,025,000 이므로, 모든 연산은 int형으로 해도 무관하다.


Sample Input Copy

2 3 4
1 2 3 4
5 6 7 8
9 10 11
12 13 14
15 16 17
18 19 20

Sample Output Copy

150 160 170
366 392 418

HINT

학과 동아리 412호에 언제든지 찾아오면 차차가 기다리고 있습니다.
언제든지 오셔도 괜찮습니다.


Source/Category