아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

각 자리가 서로 다른 덧셈식

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

요약
밑 B에서 합이 N이 되며 각 자릿수의 더하는 수 숫자가 서로 다른 순서 없는 덧셈식 개수를 1000000007로 나눈 나머지를 구합니다.
난이도

어려움10점 중 8점

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

문제

모든 덧셈 항과 합을 오른쪽 끝에 맞춰 적은 덧셈식을 복면산 덧셈식이라고 하자. 다음이 그 예다.

124
 31
 25
---
180

덧셈 항은 앞에 0을 붙이지 않고 적은 양의 정수다. 각 열에서 그 열에 놓인 덧셈 항의 숫자는 모두 서로 달라야 한다. 합의 숫자는 이 조건에 넣지 않는다. 위 식의 첫째 열에는 1만 있고, 둘째 열에는 2, 3, 2가 있으며, 셋째 열에는 4, 1, 5가 있다. 둘째 열에 2가 두 번 나오므로 위 식은 복면산 덧셈식이 아니다. 마지막 덧셈 항을 15로 바꾸고 합을 170으로 바꾸면 복면산 덧셈식이 된다.

덧셈 항의 순서는 상관없다. 덧셈 항의 순서만 다른 두 식은 같은 식으로 센다.

밑이 10이 아닌 경우도 다룬다. 밑이 bb일 때 숫자 하나는 0부터 b−1b-1까지의 정수다. 다음은 밑이 23인 복면산 덧셈식이다.

 I7B
 JJJ
----
1F47

여기서 I는 숫자 18, B는 11, J는 19, F는 15를 뜻한다. 10진법으로 적으면 두 덧셈 항은 18×232+7×23+11=969418 \times 23^2 + 7 \times 23 + 11 = 9694와 19×232+19×23+19=1050719 \times 23^2 + 19 \times 23 + 19 = 10507이고, 합은 1×233+15×232+4×23+7=202011 \times 23^3 + 15 \times 23^2 + 4 \times 23 + 7 = 20201이다. 10 이상인 숫자를 문자로 적은 것은 이 예를 읽기 쉽게 하려는 표기일 뿐이고, 그런 숫자를 어떻게 적는지는 이 문제와 무관하다.

밑이 BB이고 합이 NN인 복면산 덧셈식은 몇 개인가? 개수가 매우 클 수 있으므로 10000000071000000007로 나눈 나머지를 구한다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 이어지는 TT개의 줄에 각각 두 양의 정수 NN과 BB가 주어진다. 입력의 모든 수는 10진법으로 주어진다.

제한

  • 1≤T≤201 \le T \le 20
  • 1≤N≤1001 \le N \le 100
  • 2≤B≤102 \le B \le 10

출력

각 테스트 케이스마다 한 줄에 Case #x: y를 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 밑이 BB이고 합이 NN인 복면산 덧셈식의 개수를 10000000071000000007로 나눈 나머지다. y는 10진법으로 출력한다.

힌트

밑이 10이고 합이 6인 복면산 덧셈식은 다음 네 개다.

6
-
6

1
5
-
6

2
4
-
6

1
2
3
-
6

밑이 4이고 합이 204=820_4 = 8인 복면산 덧셈식도 네 개다.

20
--
20

11
 3
--
20

13
 1
--
20

10
 3
 1
--
20

예제4

  1. 예제 1

    입력
    2
    6 10
    8 4
    
    예상 출력
    Case #1: 4
    Case #2: 4
    
  2. 예제 2

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

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

    입력
    10
    1 10
    2 10
    3 10
    4 10
    5 10
    6 10
    7 10
    8 10
    9 10
    10 10
    
    예상 출력
    Case #1: 1
    Case #2: 1
    Case #3: 2
    Case #4: 2
    Case #5: 3
    Case #6: 4
    Case #7: 5
    Case #8: 6
    Case #9: 8
    Case #10: 10