합의 수열

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

요약
M이 주어질 때, 남은 양의 정수 중 가장 작은 M개를 지우고 그 합을 다시 지우는 과정을 반복해 만든 수열 B_M에 각 질문 N이 속하는지 판정한다.
난이도

어려움10점 중 8점

유형
수학, 정수론, 구현, 이분 탐색
정답자
아직 제출이 없습니다

문제

풋살 악귀 동우는 주위 사람들에게 항상 풋살을 하자며 사람을 모은다. 동우가 모은 풋살 멤버 중에는 재우, 종우, 현철, 준혁, 용명, 재현, 동현, 근형, 도훈, 민성, 문성, 세준이 등이 다양한 사람들이 있었고, 이 중 많은 사람들은 작년 2024 ICPC Seoul Regional이 끝난 후 있던 일산 풋살 모임에서 이번 <제6회 MatKor Cup:2025 Winter>의 출제자 혹은 검수자로 영입하는데 성공했다.

도훈이에게 수열을 선물 받은 재우는 수열의 합이 아닌 합의 수열을 다시 선물해 주고자 한다. 재우는 합의 수열을 다음과 같은 과정을 통해 만든다.

처음에 모든 양의 정수가 포함된 집합 A=Z+A=\mathbb{Z}^+가 있다. 이제 이 집합에서 다음과 같은 과정을 101,000,00010^{1\\, 000\\, 000}번 반복해 새로운 수열 B_MB\_M을 만든다.

  1. AA에 존재하는 가장 작은 수 MM개를 고르고 그 수들의 합 SS를 구한다.
  2. 고른 MM개의 수 각각에 대해 만약 AA에 그 수가 존재한다면 AA에서 지우고, SS에 대해서도 만약 SS가 AA에 존재한다면 AA에서 지운다.
  3. SS를 B_MB\_M에 추가한다.

예를 들어, M=3M=3일 때 1+2+3=61+2+3=6, 4+5+7=164+5+7=16, 8+9+10=278+9+10=27, 11+12+13=3611+12+13=36, 14+15+17=4614+15+17=46과 같은 방식으로 B\_3=\left\[ 6,16,27,36,46,57,66,75,\cdots \right]이다.

MM이 주어지고 QQ개의 질문이 주어졌을 때, 각 질문에 대해 그 수가 B_MB\_M에 존재하는지 판단해 보자.

입력

첫 번째 줄에 M(1≤M≤1018)M(1\le M\le 10^{18}), Q(1≤Q≤105)Q(1\le Q\le 10^5)가 공백으로 구분되어 주어진다.

다음 QQ개의 줄에 걸쳐 질문을 나타내는 정수 N(1≤N≤1018)N(1\le N\le 10^{18})이 주어진다.

출력

첫 번째 줄부터 각 질문에 대해 B_MB\_M에 수가 포함되어 있다면 1을, 아니면 0을 한 줄에 한 개씩 출력한다.

예제2

  1. 예제 1

    입력
    2 7
    3
    6
    49
    15
    10
    275631
    38472633
    
    예상 출력
    1
    0
    1
    0
    0
    0
    1
    
  2. 예제 2

    입력
    3 6
    16
    55
    57
    75
    1353
    38472657
    
    예상 출력
    1
    0
    1
    1
    0
    1