順番にリストされている、1を超える整数の基数の数字を検討します。数字のすべてのチャンクが奇数の長さになるまで、それらを正確に半分に繰り返し再分割します。
Base Digits Subdivided Digit Chunks
2 01 0 1
3 012 012
4 0123 0 1 2 3
5 01234 01234
6 012345 012 345
7 0123456 0123456
8 01234567 0 1 2 3 4 5 6 7
9 012345678 012345678
10 0123456789 01234 56789
11 0123456789A 0123456789A
12 0123456789AB 012 345 678 9AB
...
16 0123456789ABCDEF 0 1 2 3 4 5 6 7 8 9 A B C D E F
...
ここで、このテーブルの任意の行について、細分割された数字のチャンクをその行のベースの数値として読み取り、それらを合計します。便宜上、結果を基数10で示します。
例えば...
- ベース3のための唯一の数の合計にある:012 3 = 12 3 = 5 10
- 基数4の場合、合計する4つの数値があります:0 4 + 1 4 + 2 4 + 3 4 = 12 4 = 6 10
- 基数6:012 6 + 345 6 = 401 6 = 145 10
- 基数11:0123456789A 11 = 2853116705 10
チャレンジ
1より大きい整数をベースとして取り、この細分合計手順を実行して、最終的な合計をベース10に出力するプログラムを記述します。(したがって入力がある場合に3出力され5入力された場合、6出力される145等)
(数字はかなり大きな得ることができますので、または文字列)整数を受け取り、返す関数の書き込みのいずれかまたは入力と出力に値を使用標準入力/標準出力を。
ノート
- 組み込みまたはインポートされた基本変換関数を使用できます。
- 入力値に上限はありません(妥当な以外に
Int.Max)。"Z"がそこで止まるからといって、入力値は36で止まりません。
PS これは私の50番目の質問です :)
。
です。