Системный номер Факториал , называемый также factoradic, смешанная система счисления с номером. Факториалы определяют стоимость места числа.
В этой системе крайняя правая цифра может быть 0 или 1, вторая правая цифра может быть 0, 1 или 2 и т. Д. Это означает, что nцифра факторадического числа может иметь максимальное значение (n + 1)!.
Например, чтобы преобразовать фактическое число 24201в десятичное, вы должны сделать это:
2 * 5! = 240
4 * 4! = 96
2 * 3! = 12
0 * 2! = 0
1 * 1! = 1
240 + 96 + 12 + 0 + 1 = 349
Следовательно, фактическое число 24201является 349базовым 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! - 1- 3628799в десятичной и 987654321фактической. Это означает, что буквы не будут отображаться при фактическом вводе / выводе.
Программа не должна добавлять !перед факторическим выводом и может выводить строку или целое число. Ввод может быть в любом разумном формате.
Тестовые случаи:
Input: 1234
Output: 141120
Input: 746
Output: 101010
Input: !54321
Output: 719
Input: !30311
Output: 381
⍴⍵∩'!'с ,'!'∊⍵чтобы сохранить характер.