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

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

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

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

Ответ:
ulaborodina57
ulaborodina57
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
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?