반복되는 수열

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

정수의 십진법 표현은 각 자리 숫자의 순서를 바꾸어 다른 정수로 만들 수 있다. 이 성질을 이용해 수열을 만든다.

음이 아닌 정수 $a_0$과 자릿수 $L$이 주어진다. 다음 규칙에 따라 $a_i$로부터 $a_{i+1}$을 얻는다.

  1. $a_i$를 정확히 $L$자리 십진수로 적는다. 필요하면 앞에 $0$을 채운다. 예를 들어 여섯 자리로 적으면 $2012$는 $002012$가 된다.
  2. 각 자리 숫자를 재배열하여 만들 수 있는 가장 큰 정수와 가장 작은 정수를 구한다. 위 예에서 가장 큰 값은 $221000$, 가장 작은 값은 $000122 = 122$이다.
  3. 가장 큰 값에서 가장 작은 값을 빼서 $a_{i+1}$을 얻는다. 위 예에서는 $221000 - 122 = 220878$이다.

이 계산을 반복하면 수열 $a_0, a_1, a_2, \dots$가 만들어진다.

예를 들어 $a_0 = 83268$, $L = 6$에서 시작하면 다음과 같다.

  • $a_0 = 083268$
  • $a_1 = 886320 - 023688 = 862632$
  • $a_2 = 866322 - 223668 = 642654$
  • $a_3 = 665442 - 244566 = 420876$
  • $a_4 = 876420 - 024678 = 851742$
  • $a_5 = 875421 - 124578 = 750843$
  • $a_6 = 875430 - 034578 = 840852$
  • $a_7 = 885420 - 024588 = 860832$
  • $a_8 = 886320 - 023688 = 862632$
  • $\dots$

자릿수가 고정되어 있으므로 어떤 값은 반드시 다시 나타나며, 따라서 항상 $a_i = a_j$ ($i > j$)를 만족하는 쌍이 존재한다. 위 예에서는 $a_8 = a_1 = 862632$이므로 $(i = 8, j = 1)$이 조건을 만족한다.

$a_0$과 $L$이 주어질 때, 어떤 $j < i$에 대해 $a_i = a_j$가 성립하는 가장 작은 $i$를 찾는 프로그램을 작성하라.

입력

입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋은 공백으로 구분된 두 정수 $a_0$과 $L$이 적힌 한 줄이며, $1 \le L \le 6$이고 $0 \le a_0 < 10^L$이다.

두 개의 $0$이 적힌 줄은 입력의 끝을 나타내며, 데이터셋이 아니다.

출력

각 데이터셋에 대해 $a_i = a_j$ ($i > j$)를 만족하는 가장 작은 $i$를 찾아, 세 정수 $j$, $a_i$, $i - j$를 공백 하나로 구분하여 한 줄에 출력한다. 앞자리 $0$은 표시하지 않으며, 그 밖의 어떤 문자도 출력하지 않는다.

이 $i$는 항상 $20$을 넘지 않는다고 가정해도 된다.