Fácil 0 resolvidos 0% de aceitação

Power of Two

Check whether a number is a power of two.

O que você vai aprender

  • Check powers of two by repeated halving
  • Use the n & (n - 1) bit trick
  • Handle zero and negative numbers

Problema

Ver tradução

Decide whether n equals 2ᵏ for some whole number k ≥ 0 (1, 2, 4, 8, …).

Implement is_power_of_two(n).

Input

n: The number to check.

Output

Return true if n is a power of two.

Restrições

-10¹⁸ ≤ n ≤ 10¹⁸

Exemplos

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

Exemplo 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 has an odd factor, so it is not a power of two.

Como abordar

Tente sozinho primeiro e depois abra uma dica de cada vez.

Dica 1

A power of two has exactly one bit set in binary.

Dica 2

Check that the number is positive before using a bit-based test.

Dica 3

Negative numbers and zero are never powers of two.

Complexidade esperada

O(1) time, O(1) extra space

Referências

Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.