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

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

Ответ: 28

Условие

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

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

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

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

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

Цикл

ПОКА условие

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

КОНЕЦ ПОКА

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

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

ЕСЛИ условие

ТО команда1

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

КОНЕЦ ЕСЛИ

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

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 68 идущих подряд цифр 8? В ответе запишите полученную строку.

НАЧАЛО

ПОКА нашлось (222) ИЛИ нашлось (888)

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

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

  1. Строка состоит из одинаковых цифр, поэтому удобно следить не за всей строкой, а за тем, сколько цифр в ней остаётся после каждого прохода цикла.
  2. Найди период работы программы: определи, за сколько проходов строка снова становится однородной, то есть состоящей из одинаковых цифр, и на сколько цифр она при этом укорачивается.
  3. Раздели исходное количество цифр на это сокращение, а остаток доиграй по шагам, помня, что условие цикла проверяется перед каждым проходом и цикл остановится только тогда, когда ни одной из двух цепочек в строке не останется.

Решение

Данный алгоритм сначала заменит 9 первых восьмерок на три двойки а затем заменит эти три двойки обратно на одну восьмерку. То есть за четыре повторения цикла из строки убирается 8 восьмерок. За восемь таких групп по четыре повторения, то есть за 8 · 4 = 32 повторения цикла из строки уберется 8 · 8 = 64 восьмерки, и останется 4 восьмерки. Первые три из них будут заменены на двойку.

Ответ: 28.

Приведем решение Михаила Глинского.

Для нахождения ответа используется программа на языке Питон, выполняющая заданные преобразования строки:

s='8'*68

while ('222' in s) or ('888' in s):

if ('222' in s):

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

else:

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

print(s)

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

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

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