System liczb czynnikowych , zwany również silnikiem, jest mieszanym systemem liczbowym. Silnia określają wartość miejsca liczby.
W tym systemie najbardziej prawą cyfrą może być 0 lub 1, drugą prawą cyfrą może być 0, 1 lub 2 itd. Oznacza to, że n
cyfrowa liczba czynnikowa może mieć maksymalną wartość (n + 1)!
.
Na przykład, aby przekonwertować liczbę czynnikową 24201
na dziesiętną, wykonaj następujące czynności:
2 * 5! = 240
4 * 4! = 96
2 * 3! = 12
0 * 2! = 0
1 * 1! = 1
240 + 96 + 12 + 0 + 1 = 349
Stąd liczba czynnikowa 24201
jest 349
podstawą 10
.
Aby przekonwertować liczbę dziesiętną ( 349
na przykład) na liczbę czynnikową, wykonaj następujące czynności:
Weź największą silnię mniejszą niż liczba. W tym przypadku jest to 120
lub 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
Stąd 349
podstawą 10
jest liczba czynnikowa 24201
.
Twoim zadaniem jest stworzenie najkrótszego programu lub funkcji, która konwertuje liczbę wejściową na drugą bazę.
Dane wejściowe będą ciągiem reprezentującym nieujemną liczbę całkowitą. Liczba czynnikowa będzie poprzedzona znakiem !
(np. !24201
), Podczas gdy liczba dziesiętna nie będzie poprzedzona niczym. Możesz założyć, że maksymalne dane wejściowe będą 10! - 1
- 3628799
dziesiętne i 987654321
czynnikowe. Oznacza to, że litery nie będą pojawiać się na wejściu / wyjściu czynnikowym.
Program nie musi !
dodawać wyniku do wartości faktograficznej i może generować ciąg znaków lub liczbę całkowitą. Dane wejściowe mogą mieć dowolny rozsądny format.
Przypadki testowe:
Input: 1234
Output: 141120
Input: 746
Output: 101010
Input: !54321
Output: 719
Input: !30311
Output: 381
⍴⍵∩'!'
z'!'∊⍵
zapisać charakter.