암호문
면접 대비시간 제한1초메모리 제한1024 MB
정렬된 키의 K개 숫자 가운데 서로 다른 위치 X개를 골라 합이 Z가 되는 모든 0과 1의 암호문을 출력합니다.
문제
이비차는 암호학을 연구한다. 암호학은 정해진 수신자만 메시지를 읽을 수 있도록 암호화하는 학문이다. 그는 선택한 숫자 를 개의 0과 1로 이루어진 기록(암호문)으로 바꾸는 방법을 찾아냈다. 먼저 키를 고른다. 키는 개의 숫자를 오름차순으로 정렬한 수열이다. 숫자가 서로 같아도 된다. 예를 들어 일 때 "01248", "12345", "00122"는 가능한 키이다.
숫자 를 키에 있는 숫자 개의 합으로 나타낼 수 있으면, 암호문의 왼쪽에서 번째 자리는 키의 왼쪽에서 번째 숫자가 합에 쓰였을 때 "1"이고, 그렇지 않으면 "0"이다. 를 나타내는 방법이 여러 가지라면 암호문을 모두 출력한다. 키의 각 숫자는 합에서 최대 한 번만 쓸 수 있다.
예를 들어 , , 이고 키가 "01236"일 때, 구하는 암호문은 "00101"이다. 8은 키의 두 숫자 합 2+6으로만 나타낼 수 있기 때문이다(2+6=8, "01236"은 "00101"이 된다).
숫자 , 정수 와 , 길이 의 키가 주어지면 위 방법으로 의 암호문을 구해 출력하는 프로그램을 작성하라. 주어지는 숫자는 항상 암호화할 수 있다.
입력
첫째 줄에 자연수 (1 ≤ ≤ 20)가 주어진다. 키의 길이이다.
둘째 줄에 개의 숫자로 이루어진 키가 주어진다.
셋째 줄에 자연수 (1 ≤ ≤ )가 주어진다.
넷째 줄에 숫자 (0 ≤ ≤ 9)가 주어진다.
출력
숫자 의 암호문을 모두 한 줄에 하나씩 출력한다. 출력 순서는 상관없다.
힌트
첫 번째 테스트 데이터: "01247"에서 1+4=5이므로 01010이다.
두 번째 테스트 데이터: "001234"에서 0+2+4는 100101, 0+2+4(다른 0을 사용)는 010101, 1+2+3은 001110이다.