만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

암호문

면접 대비

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

요약
정렬된 키의 K개 숫자 가운데 서로 다른 위치 X개를 골라 합이 Z가 되는 모든 0과 1의 암호문을 출력합니다.
난이도

보통10점 중 4점

유형
백트래킹, 완전 탐색
정답자
아직 제출이 없습니다

문제

이비차는 암호학을 연구한다. 암호학은 정해진 수신자만 메시지를 읽을 수 있도록 암호화하는 학문이다. 그는 선택한 숫자 ZZ를 KK개의 0과 1로 이루어진 기록(암호문)으로 바꾸는 방법을 찾아냈다. 먼저 키를 고른다. 키는 KK개의 숫자를 오름차순으로 정렬한 수열이다. 숫자가 서로 같아도 된다. 예를 들어 K=5K=5일 때 "01248", "12345", "00122"는 가능한 키이다.

숫자 ZZ를 키에 있는 숫자 XX개의 합으로 나타낼 수 있으면, 암호문의 왼쪽에서 ii번째 자리는 키의 왼쪽에서 ii번째 숫자가 합에 쓰였을 때 "1"이고, 그렇지 않으면 "0"이다. ZZ를 나타내는 방법이 여러 가지라면 암호문을 모두 출력한다. 키의 각 숫자는 합에서 최대 한 번만 쓸 수 있다.

예를 들어 Z=8Z=8, K=5K=5, X=2X=2이고 키가 "01236"일 때, 구하는 암호문은 "00101"이다. 8은 키의 두 숫자 합 2+6으로만 나타낼 수 있기 때문이다(2+6=8, "01236"은 "00101"이 된다).

숫자 ZZ, 정수 KK와 XX, 길이 KK의 키가 주어지면 위 방법으로 ZZ의 암호문을 구해 출력하는 프로그램을 작성하라. 주어지는 숫자는 항상 암호화할 수 있다.

입력

첫째 줄에 자연수 KK (1 ≤ KK ≤ 20)가 주어진다. 키의 길이이다.

둘째 줄에 KK개의 숫자로 이루어진 키가 주어진다.

셋째 줄에 자연수 XX (1 ≤ XX ≤ KK)가 주어진다.

넷째 줄에 숫자 ZZ (0 ≤ ZZ ≤ 9)가 주어진다.

출력

숫자 ZZ의 암호문을 모두 한 줄에 하나씩 출력한다. 출력 순서는 상관없다.

힌트

첫 번째 테스트 데이터: "01247"에서 1+4=5이므로 01010이다.

두 번째 테스트 데이터: "001234"에서 0+2+4는 100101, 0+2+4(다른 0을 사용)는 010101, 1+2+3은 001110이다.

예제3

  1. 예제 1

    입력
    5
    01247
    2
    5
    
    예상 출력
    01010
    
  2. 예제 2

    입력
    6
    001234
    3
    6
    
    예상 출력
    100101
    010101
    001110
    
  3. 예제 3

    입력
    5
    01236
    2
    8
    
    예상 출력
    00101