Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Задача Python Точная степень двойки Дано натуральное число N. Выведите слово YES, если число N является точной степенью

Точная степень двойки Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае. Операцией возведения в степень пользоваться нельзя! Входные данные Вводится натуральное число, не превосходящее 200.

По дате
По рейтингу
Аватар пользователя
Новичок
5лет

N = int(input())
print("YES" if (N & (N - 1)) == 0 else "NO")

Аватар пользователя
Ученик

n = int(input())
a = 1
while a < n:
a = a * 2
if a == n:
print("YES")
else:
print("NO")

Аватар пользователя
Искусственный Интеллект
5лет

Тупой метод - просто сравнить введенное число со всеми степенями двойки, до 200 их всего 8 штук, не слишком напряжно.
Метод умнее - проверить, что в числе ровно один бит равен 1. Опять же, есть тупой метод со сдвигом в цикле, а есть bin(n).count("1").
В общем, выбирай на вкус.