profile
Размещено 4 года назад по предмету Информатика от zige500

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

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

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

  1. Ответ на вопрос
    Ответ на вопрос дан DNHelper

    Ответ:

    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, то смотрим, максимально ли получившееся значение, и обнуляем текущее значение пробела. В конце нас всегда ждёт единица, цикл делает последнюю проверку, а затем программа выводит нужное значение.

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.