Problema
Decidi se n è uguale a 2ᵏ per qualche numero intero k ≥ 0 (1, 2, 4, 8, …).
Implementa is_power_of_two(n).
Input
n: Il numero da verificare.
Output
Restituisci true se n è una potenza di due.
Vincoli
-10¹⁸ ≤ n ≤ 10¹⁸
Esempi
Input:
n = 64
Output atteso:
expected = True
Input:
long long n = 64;
Output atteso:
bool expected = true;
Input:
long n = 64;
Output atteso:
bool expected = true;
Spiegazione
64 = 2⁶.
Input:
n = 12
Output atteso:
expected = False
Input:
long long n = 12;
Output atteso:
bool expected = false;
Input:
long n = 12;
Output atteso:
bool expected = false;
Spiegazione
12 = 4 × 3 ha un fattore dispari, quindi non è una potenza di due.
Come affrontarlo
Prova prima da solo, poi apri un suggerimento alla volta.
Suggerimento 1
Una potenza di due ha esattamente un bit impostato in binario.
Suggerimento 2
Controlla che il numero sia positivo prima di usare un test basato sui bit.
Suggerimento 3
I numeri negativi e lo zero non sono mai potenze di due.
Complessità attesa
tempo O(1), spazio aggiuntivo O(1)
Riferimenti
Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.