5.01 Запись числа в двоичной системе счисления
Ошибка.
Попробуйте повторить позже
На вход алгоритма подаётся натуральное число . Алгоритм строит по нему новое число
следующим
образом.
1) Строится двоичная запись числа
2) К этой записи дописываются разряды по следующему правилу:
а) если число чётное, то к двоичной записи числа в конце дописывается
б) если число нечётное, то к двоичной записи числа в конце дописывается
Полученная таким образом запись является двоичной записью искомого числа . Укажите наибольшее число
,
меньшее
, которое может получиться после обработки этого алгоритма. В ответе запишите это число в десятичной
записи.
Решение программой
В задаче описан алгоритм, который по заданному натуральному числу N строит новое число R. Чтобы найти наибольшее возможное значение R, меньшее 128, необходимо реализовать этот алгоритм средствами языка Python.
Первым шагом алгоритма является преобразование числа N в двоичную строку. Это можно сделать с помощью функции bin() и удаления префикса ’0b’ срезом [2:].
Далее к полученной двоичной строке дописываются два дополнительных бита. Если число N чётное, к строке добавляется ’11’. Если нечётное — добавляется ’01’. Это реализуется через проверку остатка от деления числа на 2: если i
Получившуюся строку считаем новой двоичной записью числа R. Эту строку преобразуем обратно в десятичное число с помощью функции int(строка, 2).
Чтобы найти наибольшее подходящее число R, перебираем значения N в разумном диапазоне (например, до 1000), и среди всех полученных чисел R, которые строго меньше 128, сохраняем максимальное значение.
ans = 0 # Переменная для хранения максимального подходящего значения R # Перебираем значения N от 0 до 999 for i in range(1000): s = bin(i)[2::] # Получаем двоичную строку без префикса ’0b’ # Дописываем к строке два бита в зависимости от чётности числа if i % 2 == 0: s += ’11’ else: s += ’01’ # Преобразуем строку в десятичное число r = int(s, 2) # Если число R меньше 128 — проверяем, является ли оно новым максимумом if r < 128: ans = max(ans, r) print(ans) # Выводим наибольшее возможное значение R, меньшее 128
Аналитическое решение:
Рассмотрим первое максимально возможное число , меньшее
, а именно
. Переведем в двоичную систему
счисления и получим
. Уберём две последние цифры и получим нечетное число, а значит к исходному
числу
должно было добавиться
. Значит, число
не могло получиться в результате работы
алгоритма.
Теперь мы сразу можем угадать число . У нас есть
, и к нему нужно добавить
. Получаем число
.
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!