Задача к ЕГЭ по информатике на тему «Исполнитель «Редактор» – определение исходной строки по результату» №2

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

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

Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды

заменить (111, 27)

преобразует строку 05111150 в строку 0527150.

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

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

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

Цикл

   ПОКА условие

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

   КОНЕЦ ПОКА

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

Дана программа для редактора:

НАЧАЛО

   ПОКА нашлось (01) ИЛИ нашлось (02) ИЛИ нашлось (03)

      заменить (01, 30)

      заменить (02, 101)

      заменить (03, 202)

   КОНЕЦ ПОКА

КОНЕЦ

Известно, что исходная строка начиналась с нуля, а далее содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая 15  единиц, 10  двоек и 60  троек. Сколько единиц было в исходной строке?

for i in range(50):
    for j in range(50):
        for k in range(50):
            s = ’0’ + ’1’ * i + ’2’ * j + ’3’ * k
            temp = s
            while ’01’ in s or ’02’ in s or ’03’ in s:
                s = s.replace(’01’, ’30’, 1)
                s = s.replace(’02’, ’101’, 1)
                s = s.replace(’03’, ’202’, 1)
            if s.count(’1’) == 15 and s.count(’2’) == 10 and s.count(’3’) == 60:
                print(temp.count(’1’))

Ответ: 45
Оцените статью
Я решу все!