Uma subsequência é qualquer sequência que você pode obter de outra excluindo qualquer quantidade de caracteres. As distintas subsequências não vazios de 100são 0, 1, 00, 10, 100. As subsequências não vazios de distintos 1010são 0, 1, 00, 01, 10, 11, 010, 100, 101, 110, 1010.
Escreva um programa ou função que, dado um número inteiro positivo n, retorne o número de subsequências não vazias distintas da expansão binária de n .
Exemplo: como 4está 100em binário, e vimos que havia cinco subsequências distintas não vazias acima f(4) = 5. A partir de n = 1 , a sequência começa:
1, 3, 2, 5, 6, 5, 3, 7, 10, 11, 9, 8, 9, 7, 4, 9, 14, 17, 15, 16, 19, 17, 12
No entanto, seu programa deve funcionar para n <2 50 in em um segundo em qualquer máquina moderna. Alguns grandes exemplos:
f(1099511627775) = 40
f(1099511627776) = 81
f(911188917558917) = 728765543
f(109260951837875) = 447464738
f(43765644099) = 5941674