이진 스털링 수

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

요약
n과 m이 최대 10억까지 주어질 때, 여러 테스트케이스에 대해 제2종 스털링 수 S(n, m)의 짝홀을 빠르게 판별합니다.
난이도

보통10점 중 7점

유형
비트 연산, 수학, 조합론, 동적 계획법
정답자
아직 제출이 없습니다

문제

크기가 nn인 집합을 공집합이 아닌 mm개의 부분집합으로 나누는 방법의 수를 제2종 스털링 수(Stirling number of the second kind)라고 하며, S(n,m)S(n, m)으로 나타낸다.

예를 들어 n=4n = 4, m=2m = 2일 때는 다음과 같이 7가지로 나눌 수 있다.

  • {1,2,3}∪{4}\{1,2,3\} \cup \{4\}, {1,2,4}∪{3}\{1,2,4\} \cup \{3\}, {1,3,4}∪{2}\{1,3,4\} \cup \{2\}, {2,3,4}∪{1}\{2,3,4\} \cup \{1\}
  • {1,2}∪{3,4}\{1,2\} \cup \{3,4\}, {1,3}∪{2,4}\{1,3\} \cup \{2,4\}, {1,4}∪{2,3}\{1,4\} \cup \{2,3\}

S(n,m)S(n, m)은 다음 점화식으로 계산할 수 있다.

  • S(0,0)=1S(0, 0) = 1
  • S(n,0)=0(n>0)S(n, 0) = 0 \quad (n > 0)
  • S(0,m)=0(m>0)S(0, m) = 0 \quad (m > 0)
  • S(n,m)=m⋅S(n−1,m)+S(n−1,m−1)(n,m>0)S(n, m) = m \cdot S(n-1, m) + S(n-1, m-1) \quad (n, m > 0)

1≤m≤n1 \le m \le n을 만족하는 nn과 mm이 주어질 때, S(n,m)S(n, m)이 짝수이면 00을, 홀수이면 11을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 DD가 주어진다. (1≤D≤2001 \le D \le 200)

이후 DD개의 줄에 각 테스트 케이스가 한 줄씩 주어진다. 각 줄에는 두 정수 nn과 mm이 공백으로 구분되어 주어진다. (1≤m≤n≤1091 \le m \le n \le 10^9)

출력

각 테스트 케이스마다 S(n,m)S(n, m)이 짝수이면 00을, 홀수이면 11을 한 줄에 하나씩 출력한다.

예제5

  1. 예제 1

    입력
    1
    4 2
    
    예상 출력
    1
    
  2. 예제 2

    입력
    6
    1 1
    2 1
    2 2
    4 3
    4 4
    6 3
    
    예상 출력
    1
    1
    1
    0
    1
    0
    
  3. 예제 3

    입력
    4
    1 1
    5 1
    100 1
    1000000000 1
    
    예상 출력
    1
    1
    1
    1
    
  4. 예제 4

    입력
    4
    1 1
    7 7
    123456 123456
    1000000000 1000000000
    
    예상 출력
    1
    1
    1
    1
    
  5. 예제 5

    입력
    1
    1 1
    
    예상 출력
    1