비밀번호 전달하기

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

요약
독립적으로 두 번 실행되는 프로그램이 하나는 원래 여섯 수의 집합과 겹치지 않게 암호화하고, 다른 하나는 그 암호문에서 원래 수열을 정확히 복원해야 한다.
난이도

어려움10점 중 8점

유형
수학, 조합론, 비트 연산, 구현
정답자
아직 제출이 없습니다

문제

이 문제는 투 스텝 문제이다. 한 번 채점할 때 참가자의 프로그램을 2번 실행하는 형식의 문제이다. 각 실행은 일반적인 문제와 같이 진행되지만, 두 실행은 서로 독립적이다.

쿠옹이는 단웅이에게 금고의 비밀번호를 전달하려 한다. 금고의 비밀번호는 66개의 11 이상 6464 이하인 정수로 구성되어 있다.

하지만 비밀번호를 직접 전해주면 악당이 비밀번호를 중간에 뺏을 수 있으니 쿠옹이는 비밀번호를 암호화해 전달하려 한다. 암호화된 비밀번호 역시 11 이상 6464 이하의 정수 66개로 구성되어야 하며, 원래 비밀번호에 포함되는 수의 집합을 S_AS\_{A}, 암호화된 비밀번호에 포함되는 수의 집합을 S_BS\_{B}라고 할 때 S_A∩S_B=∅S\_{A} \cap S\_{B} = \emptyset를 만족해야 한다.

단웅이는 이렇게 쿠옹이가 암호화한 비밀번호를 복호화해 원래 비밀번호를 알아내려 한다. 둘은 암호화 및 복호화 전략을 미리 상의해 정해놓을 수 있다.

입력

첫 줄에 tt가 주어진다. t=1t = 1이면 쿠옹이의 암호화 전략을 수행해야 하며, t=2t = 2이면 단웅이의 복호화 전략을 수행해야 한다. (1≤t≤21 \le t \le 2)

t=1t = 1이면, 다음 줄에 원래 비밀번호인 66개의 정수 A_1A\_{1}, A_2A\_{2}, A_3A\_{3}, A_4A\_{4}, A_5A\_{5}, A_6A\_{6}이 공백으로 구분되어 주어진다. (1≤A_i≤641 \le A\_{i} \le 64)

t=2t = 2이면, 다음 줄에 암호화된 비밀번호인 66개의 정수 B_1B\_{1}, B_2B\_{2}, B_3B\_{3}, B_4B\_{4}, B_5B\_{5}, B_6B\_{6}이 공백으로 구분되어 주어진다. (1≤B_i≤641 \le B\_{i} \le 64)

출력

t=1t = 1이면, S_A∩S_B=∅S\_{A} \cap S\_{B} = \emptyset을 만족하는 암호화된 비밀번호인 66개의 정수 B_1B\_{1}, B_2B\_{2}, B_3B\_{3}, B_4B\_{4}, B_5B\_{5}, B_6B\_{6}를 공백으로 구분하여 출력한다. (1≤B_i≤641 \le B\_{i} \le 64)

t=2t = 2이면, 복호화된 비밀번호인 66개의 정수 C_1C\_{1}, C_2C\_{2}, C_3C\_{3}, C_4C\_{4}, C_5C\_{5}, C_6C\_{6}을 공백으로 구분하여 출력한다. (1≤C_i≤641 \le C\_{i} \le 64)

1≤i≤61 \le i \le 6을 만족하는 모든 정수 ii에 대하여 A_i=C_iA\_{i} = C\_{i}면 맞았습니다!!를 받는다.

힌트

프로그램이 제한 시간 안에 종료되지 않을 경우 예상치 못한 채점 결과를 받을 수 있다.

예제2

  1. 예제 1

    입력
    1
    1 2 3 4 3 2
    
    예상 출력
    31 32 33 34 33 32
    
  2. 예제 2

    입력
    2
    31 32 33 34 33 32
    
    예상 출력
    1 2 3 4 3 2