该阶乘数系统,也称为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
base 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
以因数表示。这意味着字母将不会出现在分解输入/输出中。
该程序不需要!
在乘数输出前加上a ,可以输出字符串或整数。输入可以采用任何合理的格式。
测试用例:
Input: 1234
Output: 141120
Input: 746
Output: 101010
Input: !54321
Output: 719
Input: !30311
Output: 381
⍴⍵∩'!'
与'!'∊⍵
保存字符。