Задание №12 ЕГЭ Информатика с ответом и решением
Ответ: 39
Условие
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
заменить (v, w)
нашлось (v)
Дана программа для исполнителя Редактор:
НАЧАЛО
ПОКА нашлось (19) ИЛИ нашлось (299) ИЛИ нашлось (3999)
ЕСЛИ нашлось (19)
ТО заменить (19, 2)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (299)
ТО заменить (299, 3)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (3999)
ТО заменить (3999, 1)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 1 и 100 идущих подряд цифр 9? В ответе запишите полученную строку.
Подсказки — как подойти к решению
- В теле цикла стоят три независимых условия, и каждое проверяется отдельно: за один проход может сработать не одна замена, поэтому сначала разберись, что происходит со строкой за итерацию.
- Определи, на сколько одинаковых цифр укорачивается строка за одну итерацию, и подели на это число исходное количество цифр, чтобы понять, что останется.
- На остатке выполняй замены по порядку, каждый раз проверяя условие заново; цикл закончится, когда ни одно из трёх условий не будет истинным, поэтому конечная строка может оказаться совсем короткой.
Решение
Данный алгоритм сначала заменит 19 на 2, затем 299 на 3, затем 3999 на 1. То есть на каждом шаге алгоритма удаляются шесть девяток.
Поскольку 100 девяток образуют 16 групп по 6 девяток и ещё 4 девятки, получим строку: 19999 девяток.
Последние преобразования строки: 19999 → 2999 → 39.
Ответ: 39.
Приведём другое решение на языке Python.
s = '1' + '9' * 100
while ('19' in s) or ('299' in s) or ('3999' in s):
if '19' in s:
s = s.replace('19', '2', 1)
if '299' in s:
s = s.replace('299', '3', 1)
if '3999' in s:
s = s.replace('3999', '1', 1)
print(s)
Типичные ошибки
- Остановка сделана до конца цикла: в такой строке ещё находятся цепочки из условий, и программа продолжит работу.
- Учтена только первая замена прохода: остальные независимые условия тоже проверяются и выполняются в том же проходе.
В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №12 по информатике