팩토리얼 이라고도 하는 팩토리얼 넘버 시스템 은 혼합 기수 시스템입니다. 계승은 숫자의 자리 값을 결정합니다.
이 시스템에서 가장 오른쪽에있는 숫자는 0 또는 1 일 수 있고, 두 번째 가장 오른쪽에있는 숫자는 0, 1 또는 2 등일 수 있습니다. 이것은 n
숫자 팩토리얼 숫자가 최대 값을 가질 수 있음을 의미합니다 (n + 1)!
.
예를 들어, 계승 수 24201
를 10 진수 로 변환하려면 다음을 수행하십시오.
2 * 5! = 240
4 * 4! = 96
2 * 3! = 12
0 * 2! = 0
1 * 1! = 1
240 + 96 + 12 + 0 + 1 = 349
따라서 계승 수 24201
는 349
기본 10
입니다.
10 진수 ( 349
예를 들어)를 계승 수로 변환하려면 다음과 같이하십시오.
숫자보다 작은 계승을 취하십시오. 이 경우에는 120
또는 5!
입니다.
349 / 5! = 2 r 109
109 / 4! = 4 r 13
13 / 3! = 2 r 1
1 / 2! = 0 r 1
1 / 1! = 1 r 0
따라서 349
기본 10
은 계승 수 24201
입니다.
문제는 입력 번호를 다른 기준으로 변환하는 가장 짧은 프로그램이나 기능을 만드는 것입니다.
입력은 음이 아닌 정수의 문자열 표현입니다. 계승 숫자 앞에는 !
(예 :)가 표시되고 !24201
10 진수 앞에는 아무것도 표시되지 않습니다. 당신은 최대 입력이 될 것이라고 가정 할 수있다 10! - 1
- 3628799
진수와 987654321
factoradic에. 이것은 문자가 팩토리얼 입력 / 출력에 나타나지 않음을 의미합니다.
프로그램은 a !
를 계승 출력 앞에 추가 할 필요가 없으며 문자열 또는 정수를 출력 할 수 있습니다. 입력은 적절한 형식 일 수 있습니다.
테스트 사례 :
Input: 1234
Output: 141120
Input: 746
Output: 101010
Input: !54321
Output: 719
Input: !30311
Output: 381
⍴⍵∩'!'
에'!'∊⍵
문자를 저장합니다.