Задание №5 ЕГЭ Информатика с ответом и решением
Ответ: 29
Условие
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу: если N чётное, в конец числа (справа) дописываются два нуля, в противном случае справа дописываются две единицы. Например, двоичная запись 1001 числа 9 будет преобразована в 100111.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью числа — результата работы данного алгоритма.
Укажите минимальное число N, для которого результат работы алгоритма будет больше 115. В ответе это число запишите в десятичной системе счисления.
Подсказки — как подойти к решению
- Здесь правило зависит от чётности самого числа, а не от суммы цифр: дописывание двух нулей равносильно умножению на четыре, а двух единиц даёт учетверённое число плюс три. Значит, возможны не любые результаты.
- Граница близка к значению, которое даёт чётное число, поэтому проверь оба случая подряд: сначала чётное исходное число, потом нечётное. Тебе нужно наименьшее исходное число, результат которого строго больше границы.
- Проверяй по возрастанию или восстанавливай исходное число из результата делением на четыре, но каждый раз сверяй чётность найденного числа с тем, какие два разряда оказались дописаны. В ответ идёт именно исходное число.
Решение
Переведем число 11510 в двоичную систему: 11510 = 11100 112. На выходе должно быть число большее, чем 11510. Уберём из числа 11100 112 два правых разряда. Получим число 111002 = 28. Это число не подходит, поскольку, если следовать алгоритму, получится число 112 меньше 115.. Возьмём число 2910 = 111012. Следуя алгоритму, проверим это число на чётность. Число 29 является нечётным, следовательно, добавим к двоичной записи числа 29 две единицы справа. Получим 11101112 = 11910.
Таким образом, минимальное число N, для которого результат работы алгоритма будет больше 115, равняется 29.
Ответ: 29.
Приведём другое решение на языке Python.
for n in range(1, 100):
s = bin(n)[2:] # перевод в двоичную систему
if n % 2 == 0:
s += "00"
else:
s += "11"
r = int(s, 2) # перевод в десятичную систему
if r > 115:
print(n)
break
Типичные ошибки
- Результат для этого числа не превосходит границу, значит условие задачи не выполнено. После подстановки всегда считай, чему равен результат, а не полагайся на оценку.
- В ответ записан результат работы алгоритма, а спрашивали исходное число. Восстанови по записи результата исходный код и записывай в бланк только его.
В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №5 по информатике