Problema
Decida se n é igual a 2ᵏ para algum número inteiro k ≥ 0 (1, 2, 4, 8, …).
Implemente is_power_of_two(n).
Entrada
n: O número a ser verificado.
Saída
Retorne true se n for uma potência de dois.
Restrições
-10¹⁸ ≤ n ≤ 10¹⁸
Exemplos
Entrada:
n = 64
Saída esperada:
expected = True
Entrada:
long long n = 64;
Saída esperada:
bool expected = true;
Entrada:
long n = 64;
Saída esperada:
bool expected = true;
Explicação
64 = 2⁶.
Entrada:
n = 12
Saída esperada:
expected = False
Entrada:
long long n = 12;
Saída esperada:
bool expected = false;
Entrada:
long n = 12;
Saída esperada:
bool expected = false;
Explicação
12 = 4 × 3 tem um fator ímpar, portanto não é uma potência de dois.
Como abordar
Tente sozinho primeiro e depois abra uma dica de cada vez.
Dica 1
Uma potência de dois tem exatamente um bit ligado em binário.
Dica 2
Verifique se o número é positivo antes de usar um teste baseado em bits.
Dica 3
Números negativos e zero nunca são potências de dois.
Complexidade esperada
tempo O(1), espaço extra O(1)
Referências
Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.