Ошибка.
Попробуйте повторить позже
Алгоритм получает на вход натуральное число и строит по нему новое число R следующим образом.
1) Число N переводим в двоичную запись.
2) К этой записи справа дописывается один разряд по следующему правилу: если количество единиц в двоичной записи числа больше количества нулей, то справа дописывается единица, иначе дописывается 0.
3) К полученной записи повторно применяется алгоритм из п.2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Укажите наибольшее число R, меньшее 99, которое может быть получено в результате работы данного алгоритма. В ответе это число запишите в десятичной системе счисления.
for i in range(1, 1000): s = bin(i)[2::] if s.count(’1’) > s.count(’0’): s += ’1’ else: s += ’0’ if s.count(’1’) > s.count(’0’): s += ’1’ else: s += ’0’ if int(s, 2) < 99: print(int(s, 2))
Аналитическое решение:
Заметим, что алгоритм добавляет ту цифру, которых больше у числа (если количество равно, то добавляется нуль). Если у числа было какое-то количество нулей и какое-то количество единиц, то добавляя какую-то цифру, их количество только увеличивается, а значит и на следующем шаге добавят эту же цифру. Значит к числу добавят или .
Нам нужно найти наибольшее число , которое могли получить после работы данного алгоритма. Могло ли получиться число ? Нет, так как оно кончается на 10, а мы знаем, что такое число не могло получиться после этого алгоритма.
Могло ли получиться число ? Нет, так как оно кончается на 01, а мы знаем, что такое число не могло получиться после этого алгоритма.
Могло ли получиться число ? Такое число могло получиться после этого алгоритма, но давайте проверим какое число тогда было бы без добавленных нулей – если уберём два нуля, то получим число , количество нулей больше, чем количество единиц, а значит к такому числу после работы алгоритма действительно добавляются два нуля, а значит 96 это наибольшее , которое могли получить после работы алгоритма.
Специальные программы
Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!
Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.
Бесплатное обучение
в Школково
Для детей ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Брянской областей, а также школьникам, находящимся в пунктах временного размещения Крыма обучение на платформе бесплатное.
Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».
Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ или олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!
Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!