挑战
您需要生成一个程序或函数,该程序或函数需要一个正整数N,以二进制形式计算斐波那契数列的前N个项,将其连接为单个二进制数,将该数字转换回十进制,然后将十进制输出为整数。
例如
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
,则仅输出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
该程序必须能够输出所使用语言的限制。不允许使用查找表或常见的解决方法。
这是代码高尔夫球,因此最短字节数的答案会获胜!
int32_t binary_concat_Fib(int n)
,它将结果输出值限制为2 ^ 31-1。即,您假设所有串联的位都适合整数。还是该函数工作到最大斐波那契数本身不适合整数的程度,所以将位连接起来可以提高精度?