| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 0.8 초 | 512 MB | 247 | 53 | 28 | 16.568% |
$N \times N$ 행렬 세 개 $A_0,\ A_1,\ A_2$가 주어진다.
집합 $A = \{A_0,\ A_1,\ A_2\}$라 하면, 이 집합에 포함된 세 행렬의 어떤 순열 $X,ドル $Y,ドル $Z$가 $XY = Z$이라는 조건을 만족할 때, 각 행렬은 다음과 같은 특성을 갖는다고 하자.
이때 $S(A_i | A)$를 집합 $A$에 속하는 원소 $A_i$의 특성들의 집합이라고 하자. $(0 \le i \le 2)$
예를 들어, $A_0 = \left( \begin{matrix} 0 & 0 \\ 0 & 1 \end{matrix} \right),ドル $A_1 = \left( \begin{matrix} 1 & 0 \\ 0 & 0 \end{matrix} \right),ドル $A_2 = \left( \begin{matrix} 0 & 0 \\ 0 & 0 \end{matrix} \right),ドル 그리고 $A = \{A_0,\ A_1,\ A_2\}$ 라고 하자.
이때 $A_0A_1 = A_2,ドル 그리고 $A_1A_0 = A_2$ 이다.
따라서, $S(A_0 | A) = \{\textbf{평문}, \textbf{암호화 행렬}\},ドル $S(A_1 | A) = \{\textbf{평문}, \textbf{암호화 행렬}\},ドル $S(A_2 | A) = \{\textbf{암호문}\}$ 임을 알 수 있다.
이제 $f(A_i | A)$ $(0 \le i \le 2)$를 다음과 같이 정의하자.
$$f(A_i | A) = 1 \times \left[\textbf{평문} \in S(A_i | A)\right] + 2 \times \left[\textbf{암호화 행렬} \in S(A_i | A)\right] + 4 \times \left[\textbf{암호문} \in S(A_i | A)\right]$$
여기서 $[condition] = \begin{cases} 1 & \texttt{if}\ \ condition \\ 0 & \texttt{otherwise.} \end{cases}$ 이다.
즉, 위의 예시에서
$f(A_0 | A) = (1 \times 1) + (2 \times 1) + (4 \times 0) = 3,ドル
$f(A_1 | A) = (1 \times 1) + (2 \times 1) + (4 \times 0) = 3,ドル
$f(A_2 | A) = (1 \times 0) + (2 \times 0) + (4 \times 1) = 4$ 이다.
세 개의 $N \times N$ 행렬 $A_0,ドル $A_1,ドル $A_2$가 주어진다. $A = \{A_0,\ A_1,\ A_2\}$일 때, $f(A_0 | A),\ f(A_1 | A), f(A_2 | A)$을 구하는 프로그램을 작성하시오.
첫 줄에는 정수 $N$이 주어진다. $(1 \le N \le 1,000円)$
다음 3ドルN$ 줄에 거쳐 세 행렬 $A_0,ドル $A_1,ドル $A_2$가 주어진다.
각 줄에는 $N$개의 정수가 공백으로 구분되어 주어지며, 각 정수의 절댓값은 200ドル$보다 작거나 같다.
$f(A_0 | A),ドル $f(A_1 | A),ドル $f(A_2 | A)$를 한 줄에 하나씩 순서대로 출력한다.
2 0 0 0 1 1 0 0 0 0 0 0 0
3 3 4
2 123 -123 111 -111 0 0 0 0 0 0 0 0
3 7 7
3 0 1 2 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 5 0 0 0 0 0 0 0 0
1 2 4
University > 한양대학교 > 제8회 한양대학교 프로그래밍 경시대회 > Advanced Division D번