Introdução
Esse desafio exige que você defina os zeros à direita de uma representação binária de números inteiros 010101…
, isso é melhor explicado com um exemplo:
Dado o número inteiro 400
, o primeiro passo é convertê-lo em binário:
110010000
Como podemos ver, o quinto bit é o menos significativo 1
; portanto, a partir daí, substituímos os zeros inferiores por 0101
:
110010101
Finalmente, convertemos isso de volta para decimal: 405
Desafio
Dado um retorno / saída inteiro positivo, o valor resultante correspondente do processo acima definido.
Regras
- Essa sequência é definida apenas para números inteiros com pelo menos um
1
bit, portanto a entrada sempre será ≥ 1 - Você pode usar a entrada como uma sequência de caracteres, lista de dígitos (decimal)
- Você não precisa lidar com entradas inválidas
Casos de teste
Aqui estão mais alguns casos de teste com as etapas intermediárias (você não precisa imprimi-las / devolvê-las):
In -> … -> … -> Out
1 -> 1 -> 1 -> 1
2 -> 10 -> 10 -> 2
3 -> 11 -> 11 -> 3
4 -> 100 -> 101 -> 5
24 -> 11000 -> 11010 -> 26
29 -> 11101 -> 11101 -> 29
32 -> 100000 -> 101010 -> 42
192 -> 11000000 -> 11010101 -> 213
400 -> 110010000 -> 110010101 -> 405
298 -> 100101010 -> 100101010 -> 298
n
é a potência máxima de 2 que divide a entrada, a resposta é simplesmente #(input) + ceil((2^n - 2)/3)