만드는 중입니다

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

분할 수 세기 (라지)

시간 제한5초메모리 제한512 MB

요약
합이 N인 비감소 분할 중 첫 항이 D로 나누어떨어지고 모든 항의 최댓값과 최솟값 차이가 2 이하인 경우의 수를 센다.
난이도

보통10점 중 6점

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

문제

셰쿠에게 공 NN개가 있다. 셰쿠는 이 공을 바구니 한 개 이상에 나누어 담으려고 하며, 다음 조건을 모두 지켜야 한다.

  1. 바구니를 왼쪽에서 오른쪽으로 읽을 때 각 바구니에 담긴 공의 개수가 비내림차순이어야 한다.
  2. 가장 왼쪽 바구니는 비어 있으면 안 되고, 그 바구니에 담긴 공의 개수는 DD의 배수여야 한다.
  3. 인접한 두 바구니뿐 아니라 임의의 두 바구니에 대해, 담긴 공 개수의 차이가 2 이하여야 한다.

셰쿠가 공을 나누어 담는 방법은 몇 가지인가? 왼쪽에서 오른쪽으로 읽은 공 개수의 목록이 다르면 서로 다른 방법으로 센다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다.

다음 TT개의 줄에 각각 두 정수 NN과 DD가 주어진다.

제한

  • 1≤T≤1001 \le T \le 100
  • 1≤D≤1001 \le D \le 100
  • 1≤N≤1051 \le N \le 10^5

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 공을 나누어 담는 방법의 수이다. 답은 32비트 정수 범위를 넘을 수 있다.

힌트

예제 1의 첫 번째 테스트 케이스 (N=7N = 7, D=1D = 1)에서 가능한 분배는 다음 10가지다.

  • 1 1 1 1 1 1 1
  • 1 1 1 1 1 2
  • 1 1 1 1 3
  • 1 1 1 2 2
  • 1 2 2 2
  • 1 1 2 3
  • 1 3 3
  • 2 2 3
  • 3 4
  • 7

1 2 4는 1과 4의 차이가 2보다 크므로 올바른 분배가 아니다.

예제 1의 두 번째 테스트 케이스 (N=7N = 7, D=2D = 2)에서 가능한 분배는 2 2 3 하나뿐이다. 3 4는 첫 항이 2의 배수가 아니라서 안 된다.

예제 1의 세 번째 테스트 케이스 (N=2N = 2, D=4D = 4)에서는 가능한 분배가 없다.

예제5

  1. 예제 1

    입력
    3
    7 1
    7 2
    2 4
    
    예상 출력
    Case #1: 10
    Case #2: 1
    Case #3: 0
  2. 예제 2

    입력
    1
    1 1
    
    예상 출력
    Case #1: 1
  3. 예제 3

    입력
    6
    1 1
    2 1
    3 1
    4 1
    5 1
    6 1
    
    예상 출력
    Case #1: 1
    Case #2: 2
    Case #3: 3
    Case #4: 5
    Case #5: 6
    Case #6: 9
  4. 예제 4

    입력
    6
    10 1
    10 2
    10 3
    10 5
    10 10
    10 11
    
    예상 출력
    Case #1: 20
    Case #2: 6
    Case #3: 1
    Case #4: 2
    Case #5: 1
    Case #6: 0
  5. 예제 5

    입력
    5
    100 100
    100 99
    100 50
    100 33
    100 7
    
    예상 출력
    Case #1: 1
    Case #2: 0
    Case #3: 2
    Case #4: 1
    Case #5: 14