Retour aux défis
Facile 0 résolus 0 % de réussite

Puissance de deux

Vérifiez si un nombre est une puissance de deux.

Ce que vous allez apprendre

  • Vérifier les puissances de deux en divisant par deux
  • Utiliser l'astuce binaire n & (n - 1)
  • Gérer zéro et les nombres négatifs

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

Exemple 1
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⁶.

Exemple 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.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.