Problème
Décidez si n est égal à 2ᵏ pour un certain entier k ≥ 0 (1, 2, 4, 8, …).
Implémentez is_power_of_two(n).
Entrée
n : Le nombre à vérifier.
Sortie
Retournez true si n est une puissance de deux.
Contraintes
-10¹⁸ ≤ n ≤ 10¹⁸
Exemples
Entrée :
n = 64
Sortie attendue :
expected = True
Entrée :
long long n = 64;
Sortie attendue :
bool expected = true;
Entrée :
long n = 64;
Sortie attendue :
bool expected = true;
Explication
64 = 2⁶.
Entrée :
n = 12
Sortie attendue :
expected = False
Entrée :
long long n = 12;
Sortie attendue :
bool expected = false;
Entrée :
long n = 12;
Sortie attendue :
bool expected = false;
Explication
12 = 4 × 3 a un facteur impair, donc ce n'est pas une puissance de deux.
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Une puissance de deux a exactement un bit à 1 en binaire.
Indice 2
Vérifie que le nombre est positif avant d’utiliser un test basé sur les bits.
Indice 3
Les nombres négatifs et zéro ne sont jamais des puissances de deux.
Complexité attendue
temps O(1), espace supplémentaire O(1)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.