Как проверить является ли натуральное число степенью двойки в Python
Теперь, взяв and между n и n-1, мы получим все нули в двоичной записи. Для числа, не являющегося степенью двойки, мы не получим настолько «инвертированные» записи. По аналогии с десятичной системой: только отняв от круглого числа вроде 10000 или 1000 единицу, мы получим в результате все девятки.
Проверку на n=0 можно не делать, так как по условию задачи n — натуральное. То есть итоговое решение будет выглядеть как:
Является ли число степенью двойки?
Прошу помочь найти ошибку. Смотрю на код, рассуждаю, вроде всё должно работать. Варианты с функциями и for не рассматриваются. Хочу разобраться именно в этом примере.
1 2 3 4 5 6 7 8 9 10 11 12
x=int(input()) if x%2==0: i=0 while 2**ix: if 2**i==x: print(i) elif 2**i>x: print('НЕТ') else: i=i+1 else: print('НЕТ')
Лучшие ответы ( 3 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Проверить, является ли заданное натуральное число степенью двойки
Здравствуйте, форумчане. Есть следующее задание: Дано натуральное число N. Выведите слово.
Выведите слово YES, если число N является точной степенью двойки
Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или.
Написать функцию power_of_two, которая определяет является ли заданное число степенью двойки
# Написать функцию power_of_two, которая определяет является ли заданное число степенью двойки. #.
Проверить является ли число степенью тройки
def is_power_three(n): print(n) if n == 1: return ‘Є степенем трійки’ if n.
Проверить, является ли число a степенью числа b
Решите задачу одним циклом while, допускается применение условных операторов. Задано два числа a.
Условие
По данному натуральному числу N найдите наибольшую целую степень двойки, не превосходящую N. Выведите показатель степени и саму степень.
Операцией возведения в степень пользоваться нельзя!
Решение
n = int(input()) two_in_power = 2 power = 1 while two_in_powerКомментарии
Nate Tiger :Вот такая реализация покороче:
n = int(input())
i = 1
while n > = 2**i:
i += 1
print((i-1), 2**(i-1))Аноним : Там нельзя использовать возведение в степень с помощью «**» Dmitry : n = int(input())
i = 2
nn = 1
while i i *= 2
nn += 1
print(nn - 1, i // 2) Farrukh : def power_of_two(n):
sqr=1
while(sqr <=n):
print(sqr,end=' ')
sqr=sqr*2Добавить комментарий Отменить ответ
ЕГЭ на соточку для чайников
Прошу прощения, что так долго пропадал. Питошка вернулся, да еще и с группой в вконтакте, подписывайтесь. Помимо этого, на питошке откроется новая рубрика, в которой будут четкие объяснения всех заданий ЕГЭ и ОГЭ по информатике, внимательно прочитав которые, я уверен, вы улучшите свои баллы на экзамене
Проверить, является ли число n точной степенью двойки
2) Ввести число n с клавиатуры. Если число n является точной степенью двойки, вывести “YES”, в противном случае “NO”.
94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 Ответы с готовыми решениями:
Является ли введённое натуральное число степенью двойки
Во многих задачах, связанных с компьютерами, особенно близких к аппаратной части, важную роль.
Выведите слово YES, если число N является точной степенью двойки
Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или.Проверить, является ли заданное натуральное число степенью двойки
Здравствуйте, форумчане. Есть следующее задание: Дано натуральное число N. Выведите слово.
Является ли число степенью двойки?
141 / 141 / 38 Регистрация: 20.02.2012 Сообщений: 597 и что у вас не получается? и что пробовали? 562 / 302 / 189 Регистрация: 20.05.2016 Сообщений: 592 594 / 286 / 178 Регистрация: 06.06.2016 Сообщений: 547
Прошу помочь найти ошибку. Смотрю на код, рассуждаю, вроде всё должно работать. Варианты с.1 2 3 4 5n = int(input()) if n & (n - 1) : print("NO") else: print("YES")
4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,102
Записей в блоге: 6
Сообщение от regio1961
if n & (n - 1)
Это вряд ли. Будет True, если в двоичной записи есть хоть одна единица. Но вообще подход интересный.
594 / 286 / 178
Регистрация: 06.06.2016
Сообщений: 547
Сообщение от dondublon
Это вряд ли. Будет True, если в двоичной записи есть хоть одна единица. Но вообще подход интересный.
__________________А запустить программу не пробовали, перед тем как высказать свое мнение?
4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,102
Записей в блоге: 6
regio1961, перепутал "YES" и "NO". Бывает. Привык, что в первой ветке то, что по True.
1011 / 535 / 650
Регистрация: 29.09.2014
Сообщений: 1,0831 2 3n = int(input('n = ')) rez = ['no','yes'] print(rez[n & (n-1) == 0])1011 / 535 / 650
Регистрация: 29.09.2014
Сообщений: 1,083f=lambda n: ((n&(n-1)==0)and n) and (True) or (False)12 / 12 / 10
Регистрация: 17.06.2016
Сообщений: 701 2 3 4 5 6 7 8 9 10s=2 a=0 while as: for i in range(100): a=2**i if a==s: print('true') break if a!=s: print('no')Простой вариант, работает,но исправьте ошибку(брейк не выходит из цикла)
Регистрация: 03.01.2017
Сообщений: 21 2 3 4 5 6 7 8 9 10 11 12# -*- coding: utf-8 -*- n = int(input('Введите число: ')) s = 1 x = 0 while sn: s *= 2 x+=1 if s==n: print('Да!') break else: print('Нет!')269 / 253 / 186
Регистрация: 28.10.2015
Сообщений: 7231 2 3 4 5 6 7def power2(n): if n 0: return False if n == 1: return True return n & 1 == 0 and power2(n // 2) for i in range(10): print(i, power2(i))
5890 / 3348 / 1034
Регистрация: 03.11.2009
Сообщений: 9,977def power_of_2(n): print(('NO', 'YES')[bin(n)[2:].count('1') == 1])def power_of_2(n): print(('NO', 'YES')[not bin(n)[2:].count('1')-1])Регистрация: 02.04.2016
Сообщений: 351
regio1961, что-то я не понял вашего решения. можете объяснить что это за условие?if n & (n - 1)594 / 286 / 178
Регистрация: 06.06.2016
Сообщений: 547Это условие того, что n НЕ является степенью 2. Для его понимания рассмотрите примеры, задавая n в двоичном виде.
Регистрация: 02.04.2016
Сообщений: 351
regio1961, гениальненько
198 / 85 / 15
Регистрация: 27.07.2018
Сообщений: 323
regio1961, Как называется ваша конструкция
Вернее, как она читается?if n & (n - 1)Хочу побольше об этом узнать, можете дать название?
594 / 286 / 178
Регистрация: 06.06.2016
Сообщений: 547
Сообщение от CyberGame
можете дать название?
Побитовое И чисел n и n - 1
5890 / 3348 / 1034
Регистрация: 03.11.2009
Сообщений: 9,977
а как же 0?
594 / 286 / 178
Регистрация: 06.06.2016
Сообщений: 547
Сообщение от Jabbson
а как же 0?
Работает только для положительных целых чисел
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Написать функцию power_of_two, которая определяет является ли заданное число степенью двойки
# Написать функцию power_of_two, которая определяет является ли заданное число степенью двойки. #.
Проверить является ли число степенью тройки
def is_power_three(n): print(n) if n == 1: return 'Є степенем трійки' if n.Проверить, является ли число a степенью числа b
Решите задачу одним циклом while, допускается применение условных операторов. Задано два числа a.Цикл проверить, является ли число степенью числа 3
Дано целое число N>0, если оно является степенью числа 3 то вывести TRUE, если нет - FALSE
Проверить является ли число точной степенью двойки
Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или.Проверить, является ли число точной степенью двойки
Здравствуйте, помогите пожалуйста решить задачу. Дано натуральное число N. Выведите слово YES.