정수 분할
시간 제한1초메모리 제한128 MB
k와 a가 주어질 때 k의 분할을 사전순으로 나열했을 때 a번째 분할을 출력하고, a가 전체 분할 수보다 크면 Too big을 출력한다.
문제
양의 정수 의 분할이란 를 양의 정수들의 합으로 나타내되, 그 정수들을 넓은 의미의 감소(비증가) 순서로 나열한 것이다. 분할은 이고 인 수열 으로 표현한다. 예를 들어 , , 은 모두 의 분할이다.
서로 다른 두 분할 과 에 대해, 두 수열이 처음으로 달라지는 위치를 라 하자(즉 인 모든 에서 이고 ). 이때 이면 로 정의한다. 와 가 같은 정수의 분할이므로 이러한 위치 는 항상 존재한다.
이 규칙에 따라 의 모든 분할을 사전식으로 작은 것부터 큰 것까지 정렬할 수 있다. 예를 들어 의 분할을 순서대로 나열하면 다음과 같다.
(1,1,1,1,1)
(2,1,1,1)
(2,2,1)
(3,1,1)
(3,2)
(4,1)
(5)
와 양의 정수 가 주어질 때, 이렇게 정렬한 의 분할 목록에서 (부터 세어) 번째 분할을 구하여라.
입력
첫째 줄에 테스트 케이스의 수 이 주어진다. 이어지는 개의 줄에는 각각 두 양의 정수 와 가 주어진다.
출력
각 테스트 케이스마다 의 분할을 사전식 순서로 나열했을 때 번째 분할을 출력한다. 각 부분을 쉼표로 구분하고 전체를 괄호로 감싸서, 예를 들어 (5,3,2,1,1)과 같은 형식으로 출력한다. 만약 가 의 분할의 총 개수보다 크면 대신 Too big을 출력한다.