次のプロセスを検討してください。
N.整数非負撮影
などを27
。それを整数に分割
N - floor(N/2)
しfloor(N/2)
(「大きい」と「小さい」半分)、その順序で書き込みます。
例えばに27
なり14 13
ます。スペースを削除して、整数をより大きな整数に結合します。
例えばに14 13
なり1413
ます。手順2と3を必要な回数繰り返します。
例えば1413
→707 706
→707706
→353853 353853
→353853353853
→...
この課題は、まさにこれを行うことですが、必ずしも10進ではありません。
チャレンジ
B、N、Sの3つの数字を取り込むプログラムを作成します。
Bは2〜10の整数で、Nの基数(2進数から10進数)です。
Nは、分割-再結合プロセスを適用する非負の整数です。ユーザー入力を容易にするために、整数ではなくベースBの文字列として指定されます。
Sは、分割と再結合のプロセスを繰り返す回数である負でない整数です。
プログラムの出力は、S分割-結合プロシージャの後のベースBのNの文字列表現です。
Sがの0
場合、分割は行われないため、出力は常にNです。
Nがの場合0
、すべての分割はフォーム0 0
を持ち、0
再び縮小されるため、出力は常に0
です。
例
B = 10, N = 27, S = 1
→1413
B = 10, N = 27, S = 2
→707706
B = 9, N = 27, S = 1
→1413
B = 9, N = 27, S = 2
→652651
B = anything, N = anything, S = 0
→N
B = anything, N = 0, S = anything
→0
N = 1
S = 0
toのすべてのBの表7
:
B S=0 S=1 S=2 S=3 S=4 S=5 S=6 S=7
2 1 10 11 101 1110 111111 10000011111 10000100001000001111
3 1 10 21 1110 202201 101101101100 1201201201212012012011 212100212102121002121212100212102121002120
4 1 10 22 1111 223222 111311111311 2232222232322322222322 11131111131311311111311113111113131131111131
5 1 10 32 1413 432431 213441213440 104220331443104220331442 2433241322130211014044424332413221302110140443
6 1 10 33 1514 535535 245550245545 122553122553122553122552 4125434125434125434125441254341254341254341254
7 1 10 43 2221 11111110 40404044040403 2020202202020220202022020201 10101011010101101010110101011010101101010110101011010100
8 1 10 44 2222 11111111 44444454444444 2222222622222222222226222222 11111113111111111111131111111111111311111111111113111111
9 1 10 54 2726 13581357 62851746285173 3142536758708231425367587081 15212633743485606571782880411521263374348560657178288040
10 1 10 55 2827 14141413 70707077070706 3535353853535335353538535353 17676769267676676767692676771767676926767667676769267676
S = 0
toのランダムNを持つすべてのBの表3
:
B S=0 S=1 S=2 S=3
2 11011 11101101 11101111110110 11101111110111110111111011
3 2210 11021101 20102012010200 1001212100121210012121001211
4 1113 230223 112112112111 2302302302323023023022
5 101 2323 11341134 31430423143042
6 120 4040 20202020 1010101010101010
7 134 5252 24612461 1230456412304564
8 22 1111 445444 222622222622
9 4 22 1111 505505
10 92 4646 23232323 1161616211616161
詳細
- stdinまたはコマンドラインを使用して入力します。stdoutへの出力。
- プログラムの代わりに、B、N、およびSを取り、結果を通常どおりに印刷するか、結果を(文字列として)返す関数を作成できます。
- B、N、およびSは任意の順序で使用できます。
- 10進値が2 32未満の出力を生成するすべての入力が機能するはずです。
- Nは通常の方法で表されます。すなわち最初に最も重要なケタと書かれたゼロ自体を除いて先行ゼロがありません
0
。(00
代わりに出力すること0
は無効です。) - バイト単位の最短コードが優先されます。
IFFあなたは私の挑戦を楽しみ、与えることを検討ブロックビルボット群れを!いくつかの愛 :)