평소와 같이 0에서 8까지의 숫자로 구성된 음이 아닌 정수 (기본 9)가 제공됩니다. 그러나이 숫자의 자릿수 (앞에 0이 없음)는 지사 제곱입니다.
이 때문에 숫자를 정사각형 격자로 배열 할 수 있습니다 (읽기 순서는 그대로 유지됨).
1480 (1125 기본 10)의 예 :
14
80
이제 이러한 보조 그리드의 모든 숫자가 다른 그리드 공간으로의 움직임을 나타냅니다 ( 주기적인 경계 조건 포함 ).
432
501
678
이 말은
0 = stay still
1 = move right
2 = move right and up
3 = move up
...
8 = move right and down
따라서 1480 그리드에서 4에서 시작하면 pbc를 기억하고 왼쪽으로 8로 이동합니다. 즉, 2로주기를 시작하여 오른쪽으로, 다시 4로 이동합니다.
일반적으로이 프로세스는 0에 도달하거나주기가 나타날 때까지 계속됩니다. (0은주기 1의 주기로 간주됩니다.)
1480의 경우, 4 개의 시작 숫자 각각에 도달 한주기는 2 2 2 1
각각입니다.
더 큰 그리드의 경우이 숫자는 8보다 클 수 있지만 새 비 이진수에서 "숫자"로 사용할 수 있습니다 (숫자 인 것처럼 9 ^ n의 계수).
2*9^3 + 2*9^2 + 2*9 + 1 = 1639 (base 10) = 2221 (base 9)
우리는 이것을 원래의 비수 의 강점 이라고 부릅니다 . 따라서 1480의 강도는 1639 (기본 10) 또는 2221 (기본 9)입니다.
도전
이진수의 강도가 이진수보다 크거나 작거나 같은지 알려주는 가장 짧은 프로그램을 작성하십시오. 반드시 강도를 계산할 필요는 없습니다.
입력은 제곱 수의 자릿수가 포함 된 음이 아닌 비음 수입니다 (특수한 경우 0 이외의 선행 0은 없음). 명령 행 또는 stdin에서 가져와야합니다.
출력은 다음과 같이 stdout으로 이동해야합니다.
G if the strength is larger than the original number (example: 1480 -> strength = 2221)
E if the strength is equal to the original number (example: 1 -> strength = 1)
L if the strength is less than the original number (example: 5 -> strength = 1)
재미있는 보너스 챌린지 :
당신이 찾을 수있는 가장 높은 입력은 그것의 힘과 동일합니까? (제한이 있습니까?)