우표
시간 제한1초메모리 제한128 MB
h+k≤9인 각 h, k에 대해, 최대 h장으로 1부터 n까지 모든 금액을 만들 수 있게 하는 k개 우표 값을 찾아 사전순으로 가장 작은 집합과 n을 출력한다.
문제
노바 마레테라니아 정부는 세입을 얻기 위해 여러 법률 문서에 수입 인지(우표)를 붙인다. 최근 법에 따르면 문서의 종류마다 붙일 수 있는 우표의 개수에 상한이 있다. 정부는 이 상한 안에서 만들 수 있는 금액의 범위를 최대한 넓히기 위해, 어떤 액면가의 우표를 몇 종류나 발행해야 하는지 알고 싶어 한다. 모든 우표의 액면가는 양의 정수(달러 단위)이다.
한 문서에 우표를 최대 장까지 붙일 수 있고 사용할 수 있는 액면가가 종류일 때, 를 "부터 까지의 모든 금액을 우표 장 이하로 만들 수 있는 가장 큰 값 "으로 정의한다. 같은 액면가의 우표는 여러 장 사용할 수 있고 각 액면가의 수량에는 제한이 없다(오직 총 장수 만 제한된다). 원을 만들려면 반드시 액면가 이 필요하므로, 액면가 중 하나는 항상 이다.
예를 들어 , 인 경우: 액면가 과 를 쓰면 부터 까지의 모든 금액을 만들 수 있지만, 액면가 과 을 쓰면 부터 까지 모두 만들 수 있다. 두 번째 선택이 더 좋으므로 이다.
와 가 주어질 때, 를 최대로 만드는 개의 액면가를 골라, 그 액면가들과 의 값을 함께 출력하라.
입력
입력은 여러 줄로 이루어진다. 각 줄에는 공백으로 구분된 두 정수 와 가 주어지며, , , 이다.
입력의 끝은 0 0만 있는 줄로 표시되며, 이 줄은 질의가 아니므로 처리하지 않는다.
출력
각 질의마다 한 줄을 출력한다. 고른 개의 액면가를 오름차순으로 각각 폭 3칸에 오른쪽 정렬하여 쓰고, 이어서 공백 하나와 화살표 ->, 그리고 의 값을 폭 3칸에 오른쪽 정렬하여 출력한다.
서로 다른 여러 액면가 집합이 같은 최댓값 에 도달할 수 있다. 이 경우 사전순으로 가장 작은 집합을 출력한다. 즉, 두 오름차순 액면가 수열을 앞에서부터 한 자리씩 비교하여 처음으로 값이 달라지는 자리에서 더 작은 값을 갖는 쪽을 택한다.