Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/1030: Рейтинг темы: голосов - 1030, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 02.05.2018
Сообщений: 4

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

02.05.2018, 18:05. Показов 202783. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, форумчане.

Есть следующее задание:


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

Что нам надо ввести

Натуральное число.

Что надо вывести

Ответ на задачу в виде:
"YES" или "NO"

Python
1
2
3
4
5
6
7
8
n = int(input())
i = 1
while i < n:
    i = i * 2
    if i == n:
        print("YES")
    else:
        print("NO")
Что мне изменить, чтобы он не выводил ненужные мне NO?
А то получается
NO
NO
NO
NO
YES
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2018, 18:05
Ответы с готовыми решениями:

Написать функцию power_of_two, которая определяет является ли заданное число степенью двойки
# Написать функцию power_of_two, которая определяет является ли заданное число степенью двойки. # С комментариями # Примеры: #...

Является ли число степенью двойки?
Прошу помочь найти ошибку. Смотрю на код, рассуждаю, вроде всё должно работать. Варианты с функциями и for не рассматриваются. Хочу...

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

33
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
02.05.2018, 18:51
MrPeeklz, у вас ветвь else в цикле каждый раз выполняется, вот он и выводит NO
Я бы как-нибудь так написал:
Python
1
2
3
4
5
6
7
8
9
n = int(input())
while True:
    if n == 1: 
        print('YES')
        break
    elif n & 1:
        print('NO')
        break
    n >>= 1
1
 Аватар для Yntra
2 / 2 / 0
Регистрация: 22.04.2018
Сообщений: 18
02.05.2018, 18:53
Смысл решения изменять не нужно. Измените код на:
Python
1
2
3
4
5
6
7
8
n = int(input())
i = 1
while i < n:
    i = i * 2
if i == n:
    print("YES")
else:
    print("NO")
2
 Аватар для regio1961
600 / 292 / 178
Регистрация: 06.06.2016
Сообщений: 552
02.05.2018, 20:59
Python
1
2
3
4
5
n = int(input())
if n & ( n - 1 ):
    print( "NO" )
else:
    print( "YES" )
Если 0 не считать натуральным числом.
5
0 / 0 / 0
Регистрация: 04.04.2020
Сообщений: 5
06.04.2020, 13:42
Собственно, вот:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
n = int(input())
i = 1
result = 0
while i < n:
    i = i * 2
    if i == n:
        result = 1
    else:
        result = 0
if result == 1:
    print("YES")
else:
    print("NO")
0
38 / 36 / 2
Регистрация: 24.03.2020
Сообщений: 39
26.04.2020, 10:51
Вот так вот:
Python
1
2
3
4
5
6
7
8
9
10
n = int(input())
i = 1
an = ''
while i < n:
    i = i * 2
    if i == n:
        an = 'YES'
    else:
        an = 'NO'
print(an)
0
0 / 0 / 0
Регистрация: 09.06.2020
Сообщений: 1
09.06.2020, 07:51
Python
1
2
3
4
5
6
7
8
n = int(input())
i = 1
while i < n:
    i = i * 2
if i == n:
    print("YES")
else:
    print("NO")
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
09.06.2020, 08:20
MrPeeklz, woldemas, Yntra, regio1961, piece_of_idiocy, lime_is_life, Byyf75,

Python
1
2
n = int(input())
print("YES" if bin(n).count('1') == 1 else "NO")
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.06.2020, 09:20
Python
1
2
n = int(input())
print("NO" if n & (n - 1) else "YES")
3
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
09.06.2020, 09:25
iSmokeJC, чего ж ты молодой, бумагу то не экономишь?

Python
1
print("NO" if (n := int(input())) & (n - 1) else "YES")
2
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
09.06.2020, 09:27
Цитата Сообщение от DmFat Посмотреть сообщение
чего ж ты молодой, бумагу то не экономишь?
С какой версии так делать можно?
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
09.06.2020, 09:27
outoftime, 3.8.X Моржовый оператор
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
09.06.2020, 09:32
DmFat, я один не могу читать хабр?
https://docs.python.org/3/whatsnew/3.8.html
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.06.2020, 09:33
DmFat, ну, молодозелено, че
0
2 / 2 / 0
Регистрация: 24.08.2020
Сообщений: 15
25.08.2020, 12:17
Python
1
2
3
4
5
6
7
8
9
10
a = int(input())
while a != 1 and a / 2 != 1:
    a = a - (a / 2)
    if a == int(a):
        continue
    elif a != int(a):
        print('No')
        break
if a / 2 == 1 or a == 1:
        print('Yes')
0
1 / 1 / 0
Регистрация: 20.04.2019
Сообщений: 59
04.11.2020, 18:18
Вот, всё работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main () {
    int n, i = 0;
    cin >> n;
    while (n) {
        i += n % 2;
        n /= 2;
    }
    if (i == 1){
        cout << "YES" << endl;
    } else {
        cout << "NO" << endl; 
    }
    system("pause");
    return 0;
}
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
04.11.2020, 18:27
Цитата Сообщение от владикНЕвладик Посмотреть сообщение
всё работает
Не, чет не работает
1
1 / 1 / 0
Регистрация: 20.04.2019
Сообщений: 59
04.11.2020, 18:40
Чувак, это на С++, а ты мучаешь питошку
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
04.11.2020, 18:45
владикНЕвладик, в самом деле? А я думал в ветке Python на питоне пишут...

Добавлено через 1 минуту
Если что - это был намек, что не надо на крестах и прочих языках писать в питон. Для этого соответствующие разделы есть.
0
1 / 1 / 0
Регистрация: 20.04.2019
Сообщений: 59
04.11.2020, 18:45
Сорян, не подумал, но в итоге имея пример даже на другом языке можно же переписать на нужный язык
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.11.2020, 18:45
Помогаю со студенческими работами здесь

Является ли введённое натуральное число степенью двойки
Во многих задачах, связанных с компьютерами, особенно близких к аппаратной части, важную роль играют числа, являющиеся степенями двойки: 1,...

Проверить, является ли число n точной степенью двойки
2) Ввести число n с клавиатуры. Если число n является точной степенью двойки, вывести “YES”, в противном случае “NO”.

Является ли заданное натуральное число степенью двойки
Является ли заданное натуральное число степенью двойки? Добавлено через 3 часа 46 минут Помогите пожалуйста,очень нужно !!!

Как проверить, является ли заданное число по абсолютной величине степенью двойки
Привет! Решаю эту задачу вот так: public static boolean isPowerOfTwo(int value) { value = Math.abs(value); return...

Проверить является ли заданное пользователем натуральное число степенью натурального числа
проверить, является ли заданное пользователем натуральное число степенью натурального числа в промежутке (1, 9] Если честно, то я даже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru