Задание 5 ЕГЭ по информатике: решайте с автопроверкой
В задании 5 алгоритм получает число, переводит его в двоичную или другую систему, дописывает или меняет цифры по правилу и переводит результат обратно. Нужно найти наименьшее или наибольшее исходное число, при котором результат удовлетворяет условию.
Решать задачи номераКак решать программой
Самый надёжный способ: написать функцию, которая в точности повторяет алгоритм, и перебрать исходные числа по порядку. В Python двоичная запись числа n — это bin(n)[2:], а обратный перевод — это int(s, 2). Для троичной и других систем напишите короткий цикл с делением на основание.
Внимательно читайте, к какой записи применяется правило: к исходной или к уже изменённой. Проверьте свою функцию на числе из примера в условии, прежде чем запускать перебор.
Если ищут наибольшее число с результатом меньше границы, перебирайте все числа до разумного предела и запоминайте последнее подходящее. Результат алгоритма обычно растёт вместе с числом, но не всегда монотонно, поэтому не обрывайте цикл на первой неудаче.
Разбор примера
Автомат по номеру N строит код R: к двоичной записи N с чётным числом цифр дописывает две её первые цифры, с нечётным дважды дописывает последнюю. Найдём наименьшее N, при котором R больше 100.
def R(n):
b = bin(n)[2:]
b += b[:2] if len(b) % 2 == 0 else b[-1] * 2
return int(b, 2)
n = 2
while R(n) <= 100:
n += 1
print(n)Программа печатает
25
Для N = 24 двоичная запись 11000 нечётной длины, к ней дописывается 00, и получается 1100000, то есть 96. Для N = 25 запись 11001 превращается в 1100111, это 103, больше 100. Для всех N от 2 до 24 код не больше 100, поэтому ответ 25.
Решить эту задачуЗадачи к заданию 5
- Почтовый код: длина записи решаетЛёгкаяРешать
- Наибольший код с обёрткой из единицЛёгкаяРешать
- Троичный код: наименьший больше границыЛёгкаяРешать
- Циклический сдвиг и бит чётностиЛёгкаяРешать
- Сколько шифров не больше границыЛёгкаяРешать
- Сколько разных кодов на отрезкеЛёгкаяРешать
- Четверичная запись, граница до 10¹⁴СредняяРешать
- Разность кода и номераЛёгкаяРешать
- Инверсия в обёртке из единицЛёгкаяРешать
- Запись с зеркальным отражениемЛёгкаяРешать
- Троичная запись и сумма цифрЛёгкаяРешать
- Удвоенная запись и делимостьЛёгкаяРешать
Бесплатно и без регистрации: пишете код в браузере и проверяете его тестами (без аккаунта — несколько задач в день).
Вопросы и ответы
- Как быстро перевести число в двоичную запись?
- В Python это bin(n)[2:], обратно int(s, 2). Для других оснований есть int(s, base), а запись в систему с основанием base придётся собрать циклом.
- Почему мой ответ отличается на единицу?
- Чаще всего путают «больше» и «не меньше» в условии. Сравните знак в цикле с текстом задачи.
- С какого числа начинать перебор?
- С наименьшего, которое разрешает условие. Если сказано N ≥ 2, начинайте с 2.