階乗ナンバーシステムもfactoradic呼ばれるが、混合基数数字システムです。階乗は、数値の場所の値を決定します。
このシステムでは、右端の数字は0または1のいずれか、右から2番目の数字は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
base 10
です。
(349
例として)10進数を階乗数に変換するには、次のようにします。
数値よりも小さい最大の階乗を取る。この場合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
base 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
⍴⍵∩'!'
て'!'∊⍵
キャラクターを保存できると思います。