반복되는 수열
면접 대비시간 제한1초메모리 제한128 MB
각 (a0, L)에 대해 자릿수를 재배열해 큰 수에서 작은 수를 빼는 과정을 반복하다 값이 처음 겹치는 지점을 찾아 j, 반복되는 값, 주기를 출력한다.
문제
정수의 십진법 표현은 각 자리 숫자의 순서를 바꾸어 다른 정수로 만들 수 있다. 이 성질을 이용해 수열을 만든다.
음이 아닌 정수 과 자릿수 이 주어진다. 다음 규칙에 따라 로부터 을 얻는다.
- 를 정확히 자리 십진수로 적는다. 필요하면 앞에 을 채운다. 예를 들어 여섯 자리로 적으면 는 가 된다.
- 각 자리 숫자를 재배열하여 만들 수 있는 가장 큰 정수와 가장 작은 정수를 구한다. 위 예에서 가장 큰 값은 , 가장 작은 값은 이다.
- 가장 큰 값에서 가장 작은 값을 빼서 을 얻는다. 위 예에서는 이다.
이 계산을 반복하면 수열 가 만들어진다.
예를 들어 , 에서 시작하면 다음과 같다.
자릿수가 고정되어 있으므로 어떤 값은 반드시 다시 나타나며, 따라서 항상 ()를 만족하는 쌍이 존재한다. 위 예에서는 이므로 이 조건을 만족한다.
과 이 주어질 때, 어떤 에 대해 가 성립하는 가장 작은 를 찾는 프로그램을 작성하라.
입력
입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋은 공백으로 구분된 두 정수 과 이 적힌 한 줄이며, 이고 이다.
두 개의 이 적힌 줄은 입력의 끝을 나타내며, 데이터셋이 아니다.
출력
각 데이터셋에 대해 ()를 만족하는 가장 작은 를 찾아, 세 정수 , , 를 공백 하나로 구분하여 한 줄에 출력한다. 앞자리 은 표시하지 않으며, 그 밖의 어떤 문자도 출력하지 않는다.
이 는 항상 을 넘지 않는다고 가정해도 된다.