В
Все
Х
Химия
В
Видео-ответы
А
Алгебра
Г
Геометрия
О
ОБЖ
Д
Другие предметы
У
Українська література
Р
Русский язык
Б
Беларуская мова
У
Українська мова
Э
Экономика
Ф
Физика
М
Математика
Ф
Французский язык
Г
География
И
Информатика
М
МХК
О
Окружающий мир
П
Психология
Н
Немецкий язык
О
Обществознание
П
Право
И
История
М
Музыка
Л
Литература
Қ
Қазақ тiлi
Б
Биология
А
Английский язык
nastamalysheva
nastamalysheva
16.07.2020 12:07 •  Информатика

На языке программирования python Двоичный пробел внутри положительного целого числа N представляет собой любую максимальную последовательность последовательных нулей, которая окружена единицами на обоих концах в двоичном представлении N.

Например, номер 9 имеет двоичное представление 1001 и содержит двоичный разрыв длины 2. Число 529 имеет двоичное представление 1000010001 и содержит два двоичных разрыва: один из длины 4 и один из длины 3. Число 20 имеет двоичное представление 10100 и содержит один двоичный разрыв длины 1. Число 15 имеет двоичное представление 1111 и не имеет двоичных разрывов.

Например, при N = 1041 функция должна возвращать 5, потому что N имеет двоичное представление 10000010001, и поэтому его самый длинный двоичный разрыв имеет длину 5.

Ответ:
СанаевАнтон
СанаевАнтон
23.07.2021 17:40

n = int(input())

current_gap, max_gap = 0, 0

while n % 2 != 1:

   n //= 2

while n > 0:

   if n % 2 == 0:

       current_gap += 1

   else:

       max_gap = max(current_gap, max_gap)

       current_gap = 0

   n //= 2

print(max_gap)

Объяснение:

Остаток от деления на 2 — это последняя цифра в двоичной записи числа N. Тогда, каждый раз рассматривая остаток от деления на два и деля нацело это число на 2 (то есть отсекая последнюю цифру), мы получим перевёрнутую двоичную запись N. В ходе такого "переворота" могут образоваться ведущие нули, поэтому мы от них избавимся (делим нацело число на 2, пока не встретим единицу). Далее, если мы видим 0, то увеличиваем на 1 текущее значение пробела; если видим 1, то смотрим, максимально ли получившееся значение, и обнуляем текущее значение пробела. В конце нас всегда ждёт единица, цикл делает последнюю проверку, а затем программа выводит нужное значение.

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?