만드는 중입니다

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

k번째 이진십진수

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

요약
n의 배수 중 0과 1로만 이루어지고 자릿수가 가장 적은 수를 오름차순으로 나열했을 때 k번째 수를 구합니다. 개수가 k보다 적으면 X를 출력합니다.
난이도

보통10점 중 7점

유형
BFS, 정수론, 조합론
정답자
아직 제출이 없습니다

문제

십진법으로 표현했을 때 0과 1로만 이루어진 양의 정수를 이진십진수라고 합시다. 예를 들어 101001은 이진십진수이고, 102002는 이진십진수가 아닙니다.

집합 AnA_n은 양의 정수 nn에 대해, 이진십진수이면서 nn의 배수인 수 중 자릿수가 가장 작은 것들의 집합으로 정의됩니다. 이진십진수이면서 nn의 배수인 수가 존재하지 않으면 AnA_n은 공집합입니다.

양의 정수 nn과 양의 정수 mm개로 이루어진 수열 k1,k2,cdots,km\\{k_1, k_2, \\cdots, k_m\\}이 주어집니다. 수열의 각 값 kik_i (1≤i≤m1 \le i \le m)에 대해, AnA_n의 원소 중 kik_i번째로 작은 수를 계산하는 프로그램을 작성하세요.

입력

첫 번째 줄에 두 양의 정수 nn과 mm이 공백을 사이에 두고 주어집니다. (1≤n≤1061 \le n \le 10^6, 1≤m≤1041 \le m \le 10^4)

두 번째 줄부터 mm개의 줄에 걸쳐, i+1i+1번째 줄에 kik_i의 값이 주어집니다. (1≤i≤m1 \le i \le m, 1≤ki≤10181 \le k_i \le 10^{18})

출력

mm개의 줄에 걸쳐 ii번째 줄에, AnA_n의 원소가 kik_i개 이상이라면 AnA_n에서 kik_i번째로 작은 수를 출력하고, 그렇지 않다면 X를 출력합니다.

예제3

  1. 예제 1

    입력
    27 4
    1
    2
    3
    4
    
    예상 출력
    1101111111
    1111101111
    1111111101
    X
    
  2. 예제 2

    입력
    17 2
    2
    1
    
    예상 출력
    X
    11101
    
  3. 예제 3

    입력
    903375 5
    100
    200
    300
    400
    500
    
    예상 출력
    1011010111111011101101011000
    1101011111011110100110111000
    1110011111111101101101001000
    1111011110111100111001011000
    X