ALEXMATH

Информатика. ЕГЭ

Задания для подготовки

Задачи разных лет из реальных экзаменов, демо-вариантов, сборников задач и других источников

Перейти к заданиям

Задание 12. Информатика. ЕГЭ. Статград. Профиль. 12.05.2025-1

Просмотры: 1244
Изменено: 13 мая 2025

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

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

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

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

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

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

ПОКА НЕ нашлось (00)
  заменить (01, 210)
  заменить (02, 3201)
  заменить (03, 1302)
КОНЕЦ ПОКА

Известно, что исходная строка начиналась с нуля и заканчивалась нулём, а между ними были только цифры «\(1\)», «\(2\)» и «\(3\)». После выполнения данной программы получилась строка, содержащая \(114\) единиц, \(215\) двоек и \(111\) троек. Сколько цифр «\(2\)» было в исходной строке?

Решение:

При проскакивании \(0\) через \(1\) получаем такое преобразование: \(01 \to 210,\) т.е. одна \(1\) даёт в итоговую строку одну \(2\) и одну \(1.\) Теперь рассмотрим проскакивание нуля через \(2{:}\) \(02 \to 3201 = 02 \to 32210.\) Т.е. одна двойка выдаёт в итоговую строку по одной \(1\) и \(3\) и две \(2.\) Наконец, проскакивание \(0\) через \(3\) приводит к преобразованию \(03 \to 1332210.\) Т.е. одна \(3\) даёт в итоговой строке две \(1,\) две \(2\) и две \(3.\) Пусть в начальной строке было \(e\) единиц, \(d\) двоек и \(t\) троек. Тогда получаем систему уравнений: $$ \begin{cases} e + d + 2t & = & 114 \\ e + 2d + 2t & = & 215 \\ d + 2t & = & 111 \end{cases} $$ Вычитая второе уравнение из первого сразу получаем, что \(d = 101.\) Можно найти и остальные числа: \(t = 5,\) \(e = 3.\) Для проверки напишем небольшую программу:

Python


s = '0' + '111' + '2' * 101 + '3' * 5 + '0'

while '00' not in s:
    s = s.replace('01', '210', 1)
    s = s.replace('02', '3201', 1)
    s = s.replace('03', '1302', 1)

print(s.count('1'), s.count('2'), s.count('3'))

Ответ: \(101\)

Обсуждение задания

Здесь пока нет ни одного комментария. Будьте первым!

kege1
kege2
kege3
Новый тренажёр-эмулятор
Станции КЕГЭ

Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене.

Новое видео

Методы решения задания 16 ЕГЭ по Информатике «Вычисление рекуррентных выражений»

Поддержать автора сайта!

Поддержите автора сайта, если материалы, размещённые здесь, оказались вам полезны.

Совершая донат, вы соглашаетесь с Условиями использования

Расписание пробников Статграда в 2026/27 учебном году