Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Можно ли представить это число в виде степени двойки

mars p Ученик (98), закрыт 3 года назад
Напиши следующую программу без использования арифметической операции «возведение в степень».
Пользователь вводит положительное число. Если это число можно представить в виде степени двойки — программа выводит “Число можно разложить в степень двойки”, иначе — “Число нельзя разложить в степень двойки”. Оператор if-else должен быть вне цикла.
Дополнен 3 года назад
Обрати внимание, что единица это два в нулевой степени.
Лучший ответ
Маша Малинина Просветленный (35238) 3 года назад
Во-первых, надо правильно вопросы задавать. 10 является степенью двойки - разве нет, если учесть, что 10=2**(1/lg2) ? Вот трансцендентное число 1/lg2 и будет в данном случае степенью двойки! А если требуется установить является ли введённое положительное число целой степенью двойки, то так и надо говорить!
Во-вторых, никаких циклов здесь вообще не требуется. Всё что требуется - это пара операторов:
n = int(input("n = "))
print("Число можно разложить в степень двойки" if n&(n-1) else "Число нельзя разложить в степень двойки")
А если надо сделать обязательно через цикл, то это надо заранее специально оговаривать.
В-третьих, я надеюсь, что разрешено ограничиваться только введением целого положительного числа, потому что если вводится любое положительное число вещественного или дробного типов, то его ещё нужно проверять на принадлежность к множеству целых чисел.
Остальные ответы
Olezhka_2003 Знаток (458) 3 года назад
Да, это число можно представить в виде степени двойки
Высший разум (1271064) 3 года назад
# Python 3.8+
print((n := int(input())) & (n - 1) == 0)
Леонид Оракул (67003) 3 года назад
да любое целое - можно.. дробное - не любое...
Похожие вопросы