상자와 돌

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

요약
S개의 돌을 처음 B-1개의 상자에 나눠 담는 분포 가운데, 매 라운드 후수로 두는 Carole이 Paul을 상대로 반드시 이기는 분포의 수를 센다.
난이도

어려움10점 중 8점

유형
게임 이론, 조합론, 동적 계획법, 누적 합
정답자
아직 제출이 없습니다

문제

Paul과 Carole은 돌 SS개와 11번부터 BB번까지 번호가 매겨진 상자 BB개로 게임을 한다. 게임을 시작하기 전에 SS개의 돌을 11번부터 B−1B-1번 상자에 임의로 나누어 담고, BB번 상자는 비워 둔다. 게임은 라운드 단위로 진행된다.

각 라운드에서 먼저 Paul이 현재 상자에 들어 있는 돌들의 부분집합 PP를 고른다. 원하는 상자에서 원하는 만큼 고를 수 있고, 하나도 고르지 않아 PP가 공집합이어도 된다. 그다음 Carole이 두 가지 중 하나를 택한다.

  • PP를 승격시키고 나머지 돌을 버린다, 또는
  • PP를 버리고 나머지 돌을 승격시킨다.

돌을 승격한다는 것은 그 돌을 다음 번호의 상자로 옮기는 것이다. 즉 bb번 상자에 있던 돌은 b+1b+1번 상자로 이동한다. 돌을 버린다는 것은 그 돌을 상자에서 완전히 제거하여 이후 라운드에서 더 이상 쓰지 않는 것이다.

어떤 돌이 BB번 상자에 도달하면 Paul이 이기고, 상자에 남은 돌이 하나도 없게 되면 Carole이 이긴다. 두 사람은 모두 최적으로 플레이한다. Paul이 한 번도 실수하지 않더라도 Carole이 반드시 이길 수 있는, SS개의 돌을 11번부터 B−1B-1번 상자에 나누어 담는 초기 배치가 몇 가지인지 구하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어지며, 각 테스트 케이스는 한 줄이고 파일의 끝까지 이어진다. 각 줄에는 두 정수 SS와 BB가 주어진다 (1≤S≤2001 \le S \le 200, 2≤B≤1002 \le B \le 100). SS는 돌의 개수, BB는 상자의 개수이다.

출력

각 테스트 케이스마다, SS개의 돌을 앞쪽 B−1B-1개의 상자에 나누어 담는 배치 중 Carole이 반드시 이길 수 있는 배치의 수를 한 줄에 하나씩 출력한다. 이 수가 매우 커질 수 있으므로 109+710^9 + 7으로 나눈 나머지를 출력한다.

예제1

  1. 예제 1

    입력
    2 3
    8 4
    42 42
    
    예상 출력
    2
    0
    498467348