Я хочу ранжировать (отображая последовательность битов в число) и отменять (отображать ранг последовательность битов) битовую последовательность Фибоначчи.
Что такое битовая последовательность Фибоначчи?
Каждое натуральное число x
можно описать как суммирование различных чисел Фибоначчи. Битовая последовательность Фибоначчи описывает, какое число Фибоначчи используется для окончательного суммирования x
. A set bit
или 1
в битовой последовательности Фибоначчи выбирает соответствующее число Фибоначчи. Пример 00101
означает F2
+ F4
= 1
+ 3
= 4
.
Например, для числа 39
мы имеем следующие действительные битовые последовательности Числа Фибоначчи за битовой последовательностью в этом примере следующие:
0,1,1,2,3,5,8,13,21,34
0000010001
k = 2
r = 0
0000010110
k = 3
r = 0
0001100001
k = 3
r = 1
0001100110
k = 4
r = 0
0001111010
k = 5
r = 0
0110100110
k = 5
r = 1
0110111010
k = 6
r = 0
Итак, у нас есть следующие параметры:
n
представляющее число
k
количество единиц в битовой последовательности
r
ранг в подмножестве, описанный n
и r
.
Как мне сделать ранжирование с параметрами n,k,r
? Существует ли для этого алгоритм?