К списку задач
Легко Решено: 0 Процент решений: 0%

Степень двойки

Проверьте, является ли число степенью двойки.

Чему вы научитесь

  • Проверять степени двойки делением пополам
  • Использовать битовый трюк n & (n - 1)
  • Обрабатывать ноль и отрицательные числа

Условие

Определите, равняется ли n числу 2ᵏ для некоторого целого неотрицательного k (1, 2, 4, 8, …).

Реализуйте функцию is_power_of_two(n).

Ввод

n: Число для проверки.

Вывод

Верните true, если n — степень двойки.

Ограничения

-10¹⁸ ≤ n ≤ 10¹⁸

Примеры

Пример 1
Ввод:
n = 64

Ожидаемый вывод:
expected = True
Ввод:
long long n = 64;

Ожидаемый вывод:
bool expected = true;
Ввод:
long n = 64;

Ожидаемый вывод:
bool expected = true;

Пояснение

64 = 2⁶.

Пример 2
Ввод:
n = 12

Ожидаемый вывод:
expected = False
Ввод:
long long n = 12;

Ожидаемый вывод:
bool expected = false;
Ввод:
long n = 12;

Ожидаемый вывод:
bool expected = false;

Пояснение

12 = 4 × 3 имеет нечётный множитель, поэтому это не степень двойки.

Как подступиться

Сначала попробуйте сами, затем открывайте подсказки по одной.

Подсказка 1

Степень двойки в двоичном виде имеет ровно один установленный бит.

Подсказка 2

Проверьте, что число положительное, прежде чем использовать побитовую проверку.

Подсказка 3

Отрицательные числа и ноль никогда не являются степенями двойки.

Ожидаемая сложность

время O(1), доп. память O(1)

Ссылки

Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

Пока нет опубликованных решений. Решите задание, чтобы поделиться первым.