만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

카프레카 변환

시간 제한2초메모리 제한1024 MB

요약
주어진 정수 x의 자릿수를 재배열해 가장 큰 수와 가장 작은 수를 만들고, 두 수의 차이를 x와 같은 자릿수로 출력합니다.
난이도

쉬움10점 중 2점

유형
정렬, 구현
정답자
아직 제출이 없습니다

문제

정수 xx가 주어졌을 때 다음 연산을 생각하자. MM은 xx의 자릿수를 재배열해서 얻을 수 있는 가장 큰 수이고, mm은 가장 작은 수이다(이 수는 앞에 0이 올 수 있다). K(x)K(x)는 차이 M−mM-m을 뜻하며, 결과의 자릿수가 xx와 같아지도록 필요하면 앞에 0을 채운다.

예를 들어 K(100)=100−001=099K(100) = 100 - 001 = 099, K(2414)=4421−1244=3177K(2414) = 4421 - 1244 = 3177이다.

카프레카는 각 자리의 숫자가 모두 같지 않은 네 자리 수 xx에서 시작해 이 연산을 반복하면(K(x),K(K(x)),…K(x), K(K(x)), \ldots) 결국 6174에 도달한다는 것을 증명했다. K(6174)=7641−1467=6174K(6174) = 7641 - 1467 = 6174이므로 과정은 6174에서 순환한다.

주어진 수 xx에 대해 K(x)K(x)를 계산하는 프로그램을 작성하라.

입력

입력 파일에는 앞에 0이 없는 정수 xx (1≤x≤1091 \le x \le 10^9)가 한 개 주어진다.

출력

출력 파일에 K(x)K(x)를 출력한다.

예제2

  1. 예제 1

    입력
    100
    
    예상 출력
    099
    
  2. 예제 2

    입력
    2414
    
    예상 출력
    3177