πЕГЭ · ИИ-репетитор12 предметов · задания ФИПИ
Главная → Информатика → Задания №12 → Задание i12-08

Задание №12 ЕГЭ Информатика с ответом и решением

Ответ: 2221

Условие

Исполнитель Редактор получает на вход строку цифр и преобразует её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.

А) заменить (v, w).

Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 0527150.

Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.

Б) нашлось (v).

Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.

Цикл

ПОКА условие

последовательность команд

КОНЕЦ ПОКА

выполняется, пока условие истинно.

В конструкции

ЕСЛИ условие

ТО команда1

ИНАЧЕ команда2

КОНЕЦ ЕСЛИ

выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 77 единиц?

НАЧАЛО

ПОКА нашлось (11)

ЕСЛИ нашлось (222)

ТО заменить (222, 1)

ИНАЧЕ заменить (11, 2)

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Подсказки — как подойти к решению

  1. Главное здесь — порядок проверок: сначала ищется тройка двоек, и только если её нет, склеиваются две единицы. Из-за этого шесть единиц подряд исчезают, превращаясь в одну цифру.
  2. Не выписывай всю длинную цепочку вручную: пойми, во сколько раз укорачивается блок единиц за один полный круг, и повторяй это укорочение, пока остаток не станет совсем маленьким.

Решение

Данный алгоритм сначала заменит 6 первых единиц на три двойки, а затем заменит эти три двойки обратно на одну единицу. То есть, шесть подряд идущих единиц заменяются на одну. Так, из 77 единиц = 12 групп по 6 единиц и еще пять единиц — всего 17 единиц.

Снова заменятся 2 группы по 6 единиц, итого осталось 7 единиц. Шесть первых будут заменены на три двойки и останется строка 2221.

Примечание. В получившейся строке 2221 первые три двойки не заменяются, поскольку условие ПОКА нашлось (11) не выполняется.

Ответ: 2221.

Приведём другое решение на языке Python.

s = '1' * 77

while ('11' in s):

if '222' in s:

s = s.replace('222', '1', 1)

else:

s = s.replace('11', '2', 1)

print(s)

Типичные ошибки

Решить это задание в тренажёре

В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №12 по информатике