입력:
0-9 범위의 숫자로 구성된 양의 정수 n .
도전:
d 가 정수에서 가장 높은 숫자 이면 숫자의 밑이 d + 1 이라고 가정합니다 . 정수는 예 경우 1256 당신은 그것에서의 가정해야 기본-7 이 있다면, 10110를 누른 다음 그것의 가정하여야한다 기초 2 (바이너리)를하고 있다면 159 다음의 진수.
이제 1 이 10의 정수에 도달 하거나 2가 한 자리 정수에 도달 할 때까지 다음을 수행하십시오 .
- 정수 를 밑- (d + 1) 에서 밑 -10으로 변환
- 이 새로운 정수의 밑을 찾으십시오 (다시 말하면, base- (d + 1) 여기서 d 는 새로운 숫자에서 가장 높은 숫자입니다)
- 1 단계로 이동하십시오 .
예 :
입력 값이 n = 413574라고 가정합니다 . 가장 높은 자릿수 d = 7 이므로 이것은 base-8 (8 진수)입니다. 이것을 십진수로 변환하고 137084를 얻 습니다 . 가장 높은 자릿수 d = 8 이므로 이것은 base-9 입니다. 이것을 십진수로 변환하고 83911을 얻 습니다 . 가장 높은 자릿수는 9 이므로 10 진수이며 우리는 멈 춥니 다. 출력은 83911 입니다.
입력 값이 n = 13552라고 가정합니다 . 가장 높은 자릿수는 d = 5 이므로 base-6 입니다. 이것을 십진수로 변환하고 2156을 얻습니다 . 가장 높은 자릿수 d = 6 이므로 이것은 base-7 입니다. 이것을 십진수로 변환하고 776을 얻습니다 . 가장 높은 숫자는 d = 7 이므로 base-8 입니다. 이것을 십진수로 변환하고 510을 얻습니다 . 가장 높은 자릿수는 d = 5 이므로 base-6 입니다. 이것을 십진수로 변환하고 186을 얻습니다 . 최상위 디지트가 8 이므로이다 베이스 -9- . 이것을 십진수로 변환하고 159를 얻습니다.. 가장 높은 자릿수는 9 이므로 이것은 10 진수이며 우리는 멈 춥니 다. 출력은 159가 되어야한다 .
입력 값이 n = 17 이라고 가정합니다 . 이것은 우리에게 15 , 11 , 3 을 줄 것입니다. 그것은 한 자리수이므로 출력 할 것입니다.
테스트 사례 :
5
5
17
3
999
999
87654321 (base-9 -> 42374116 in decimal -> base-7 -> 90419978 in decimal)
9041998
41253 (5505 -> 1265 -> 488 -> 404 -> 104 -> 29)
29
노트:
- I / O, 허점 등에 관한 표준 규칙. 입력을 문자열로 취할 수 있습니다
- 설명이 권장됩니다
- 기본 변환 명령을 사용할 수 있습니다
- 내장 함수를 사용하는 명백한 방법보다 훨씬 길어도 언어의 기본 변환 함수 (있는 경우)를 사용하지 않는 솔루션은 환영합니다.
분명히 이것은 OEIS A091047 입니다.