m진 분할

n을 m의 거듭제곱들의 합으로 나타내는 분할의 수를 세는 문제로, 최대 1000개의 질의와 n은 10000까지 주어진다.

보통5동적 계획법수학구현조합론면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

정수 nn의 분할은 합이 nn인 양의 정수 모음이고, 보통 내림차순으로 쓴다. 예를 들면 다음과 같다.

10 = 4+3+2+1

분할에 들어가는 항이 모두 mm의 거듭제곱이면 이 분할을 m진 분할이라고 한다. 9의 3진 분할은 다음 다섯 가지다.

9
3+3+3
3+3+1+1+1
3+1+1+1+1+1+1
1+1+1+1+1+1+1+1+1

정수 nn의 m진 분할이 몇 개인지 세는 프로그램을 작성하라.

입력

첫 줄에 데이터 세트의 개수 PP (1P10001 \le P \le 1000)가 주어진다. 데이터 세트는 서로 독립이고 모두 같은 방법으로 처리한다.

각 데이터 세트는 한 줄이며, 공백으로 구분한 정수 세 개로 이루어진다. 차례대로 데이터 세트 번호 KK (1K10001 \le K \le 1000), 거듭제곱의 밑 mm (3m1003 \le m \le 100), m진 분할의 개수를 셀 정수 nn (3n100003 \le n \le 10000)이다. 데이터 세트 번호는 입력에서 읽는 값이고, 오름차순이라는 보장은 없다.

nn의 m진 분할 개수는 항상 32비트 부호 없는 정수 범위에 들어간다.

출력

데이터 세트마다 한 줄씩, 입력에 나온 순서대로 출력한다. 각 줄에는 입력에서 읽은 데이터 세트 번호 KK, 공백 하나, nn의 m진 분할 개수를 차례대로 쓴다.