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 ncyfrowa liczba czynnikowa może mieć maksymalną wartość (n + 1)!.
Na przykład, aby przekonwertować liczbę czynnikową 24201na 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 24201jest 349podstawą 10.
Aby przekonwertować liczbę dziesiętną ( 349na przykład) na liczbę czynnikową, wykonaj następujące czynności:
Weź największą silnię mniejszą niż liczba. W tym przypadku jest to 120lub 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 349podstawą 10jest 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- 3628799dziesiętne i 987654321czynnikowe. 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.