introduction
Ce défi nécessite que vous définissiez les zéros de fin d'une représentation binaire entière 010101…
, cela est mieux expliqué avec un exemple:
Étant donné l'entier 400
, la première étape consiste à le convertir en binaire:
110010000
Comme nous pouvons voir que le cinquième bit est le bit le moins significatif 1
, à partir de là, nous remplaçons les zéros inférieurs par 0101
:
110010101
Enfin, nous convertissons cela en décimal: 405
Défi
Étant donné un retour / sortie entier positif, la valeur résultante correspondante du processus défini ci-dessus.
Règles
- Cette séquence n'est définie que pour les entiers avec au moins un
1
bit, donc l'entrée sera toujours ≥ 1 - Vous pouvez prendre la saisie sous forme de chaîne, liste de chiffres (décimal) à la place
- Vous n'avez pas à gérer les entrées non valides
Cas de test
Voici quelques autres tests avec les étapes intermédiaires (vous n'avez pas besoin de les imprimer / retourner):
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
la puissance maximale de 2 divise l'entrée, alors la réponse est simplement(input) + ceil((2^n - 2)/3)