아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

양자 연산

시간 제한1초메모리 제한128 MB

요약
여러 정수 행렬의 텐서 곱을 계산한 뒤 원소의 최댓값과 최솟값, 행 합과 열 합의 최댓값과 최솟값을 구한다.
난이도

보통10점 중 5점

유형
구현, 행렬, 수학, 누적 합
정답자
아직 제출이 없습니다

문제

양자 컴퓨팅은 현재 활발히 연구되는 주제입니다. 만약 실제로 만들 수 있다면, 양자 컴퓨터는 특정 계산 작업을 오늘날 존재하는 그 어떤 컴퓨터보다도 훨씬 빠르게 수행할 수 있습니다. 다행히 이 문제를 풀기 위해 양자 컴퓨터가 필요하지는 않습니다.

양자 컴퓨팅의 핵심 개념 중 하나는 양자 연산(quantum operation) 입니다. 양자 연산은 본질적으로 하나의 행렬로 생각할 수 있습니다. 또한 서로 다른 양자 데이터에 대해 두 양자 연산을 병렬로 수행하면, 그 결과를 더 큰 하나의 양자 연산으로 볼 수 있습니다. 이를 행렬의 관점에서 보면, 두 행렬을 병렬로 결합하여 얻는 행렬을 두 행렬의 텐서 곱(tensor product) 이라 하며 기호 ⊗\otimes 로 나타냅니다. 이는 여러분이 배웠을 법한 일반적인 행렬 곱과는 다릅니다.

두 행렬 AA 와 BB(각각 본질적으로 2차원 배열)가 주어질 때, 각 원소를 다음과 같이 나타냅니다.

A=[a11a12⋯a1na21a22⋯a2n⋮⋮⋱⋮am1am2⋯amn],B=[b11b12⋯b1qb21b22⋯b2q⋮⋮⋱⋮bp1bp2⋯bpq].A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix}, \quad B = \begin{bmatrix} b_{11} & b_{12} & \cdots & b_{1q} \\ b_{21} & b_{22} & \cdots & b_{2q} \\ \vdots & \vdots & \ddots & \vdots \\ b_{p1} & b_{p2} & \cdots & b_{pq} \end{bmatrix}.

여기서 행렬 AA 의 크기는 m×nm \times n(mm 행, nn 열)이고, 행렬 BB 의 크기는 p×qp \times q 입니다.

두 행렬의 텐서 곱은 다음과 같은 mp×nqmp \times nq 행렬(mpmp 행, nqnq 열)입니다.

A⊗B=[a11[B]a12[B]⋯a1n[B]a21[B]a22[B]⋯a2n[B]⋮⋮⋱⋮am1[B]am2[B]⋯amn[B]],A \otimes B = \begin{bmatrix} a_{11}[B] & a_{12}[B] & \cdots & a_{1n}[B] \\ a_{21}[B] & a_{22}[B] & \cdots & a_{2n}[B] \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1}[B] & a_{m2}[B] & \cdots & a_{mn}[B] \end{bmatrix},

여기서 aij[B]a_{ij}[B] 는 BB 의 모든 원소에 aija_{ij} 를 곱하여 얻은 블록을 뜻합니다.

텐서 곱은 교환법칙이 성립하지 않습니다. 즉, 행렬의 순서를 바꾸면 결과가 달라질 수 있습니다(A⊗B≠B⊗AA \otimes B \ne B \otimes A).

세 개 이상의 행렬에 대해서는 A⊗B⊗C=(A⊗B)⊗CA \otimes B \otimes C = (A \otimes B) \otimes C 로 정의합니다. 텐서 곱은 결합법칙이 성립하므로 어떻게 묶어 계산하든 결과는 같습니다.

주어진 두 개 이상의 행렬의 텐서 곱을 계산하고, 그에 대한 몇 가지 통계값을 출력하세요.

입력

첫째 줄에는 행렬의 개수 NN(양의 정수)이 주어집니다. 그다음에는 NN 개의 행렬을 순서대로 설명하는 블록이 이어집니다.

각 블록의 첫째 줄에는 두 양의 정수 rr 과 cc 가 공백으로 구분되어 주어지며, 각각 행의 수와 열의 수를 나타냅니다. 이어지는 rr 개의 줄은 각 행을 순서대로 나타내며, 각 줄에는 cc 개의 정수가 공백으로 구분되어 주어집니다.

출력

다음 순서대로 여섯 개의 정수를 한 줄에 하나씩 출력합니다.

  • 텐서 곱의 최대 원소
  • 텐서 곱의 최소 원소
  • 최대 행 합(한 행에 있는 원소들의 합)
  • 최소 행 합
  • 최대 열 합(한 열에 있는 원소들의 합)
  • 최소 열 합

텐서 곱 행렬의 행 수와 열 수는 각각 10241024 를 넘지 않는다고 가정해도 좋습니다.

예제2

  1. 예제 1

    입력
    2
    2 2
    1 1
    1 -1
    2 2
    1 0
    0 1
    
    예상 출력
    1
    -1
    2
    0
    2
    0
    
  2. 예제 2

    입력
    3
    2 2
    1 0
    0 3
    2 2
    1 1
    1 -1
    2 2
    1 0
    0 1
    
    예상 출력
    3
    -3
    6
    0
    6
    0