チャレンジ
正の整数Nを取り、2進数でフィボナッチ数列の最初のN項を計算し、それを1つの2進数に連結し、その数値を10進数に変換してから10進数として出力するプログラムまたは関数を生成する必要があります整数。
例えば
1 -> [0] -> 0 to decimal outputs 0
3 -> [0, 1, 1] -> 011 to decimal outputs 3
4 -> [0, 1, 1, 10] -> 01110 to decimal outputs 14
->
、単に数値を出力する必要はありません(例えば、ユーザーが4
、単にoutputと入力した場合14
)。矢印は、プログラムが何をする必要があるかを説明するためのものです。
テストケース
1 -> 0
2 -> 1
3 -> 3
4 -> 14
5 -> 59
6 -> 477
7 -> 7640
8 -> 122253
9 -> 3912117
10 -> 250375522
11 -> 16024033463
12 -> 2051076283353
13 -> 525075528538512
14 -> 134419335305859305
15 -> 68822699676599964537
16 -> 70474444468838363686498
17 -> 72165831136090484414974939
18 -> 147795622166713312081868676669
19 -> 605370868394857726287334099638808
20 -> 4959198153890674493745840944241119317
プログラムは、使用中の言語の制限まで出力できる必要があります。ルックアップテーブルまたは一般的な回避策は許可されていません。
これはcode-golfなので、バイト数が最も少ない答えが勝ちです!
int32_t binary_concat_Fib(int n)
、結果の出力値を2 ^ 31-1に制限します。つまり、連結されたすべてのビットが整数に収まると仮定します。または、最大フィボナッチ数がそれ自体で整数に収まらない点まで機能する必要があるため、ビットの連結には拡張精度が必要ですか?