Виклик
Вам потрібно створити програму або функцію, яка приймає додатне ціле число 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. тобто ви вважаєте, що всі об'єднані біти вміщуються в ціле число. Або функція повинна працювати до того моменту, коли найбільше число Фібоначчі не вкладається в ціле число самостійно, тому об'єднання бітів вимагає великої точності?