Сдай ЕГЭ! Бесплатные материалы для подготовки каждую неделю!
null
Нажимая на кнопку, вы даете согласие на обработку своих персональных данных согласно 152-ФЗ. Подробнее
banner
Slider
previous arrow
next arrow
Slider

Задание 12. Алгоритмы. Выполнение алгоритма. Исполнитель Редактор

12 задание имеет продвинутый уровень сложности. В этой задаче ЕГЭ по информатике составители хотят проверить наше умение исполнить алгоритм для конкретного исполнителя с фиксированным набором команд. Давайте разберёмся с основными терминами и теоретическими знаниями, которые могут понадобиться для понимания задачи.

Алгоритм — это конечный набор точно определённых правил или инструкций, предназначенных для решения определённого класса задач. Эти инструкции описывают последовательность действий, которые должен выполнить исполнитель.

Исполнитель может быть кем или чем угодно: человеком, группой людей, животным, машиной или другим объектом, который способен понимать и выполнять определённые команды.

Существуют три основных типа алгоритмов:

  • Линейные алгоритмы — команды выполняются последовательно, без каких-либо условий.
  • Разветвляющиеся алгоритмы — последовательность действий зависит от выполнения определённых условий.
  • Циклические алгоритмы — некоторые команды повторяются многократно, что называется циклом. При этом повторения выполняются ограниченное количество раз, чтобы алгоритм не зацикливался, нарушая требование результативности.

В циклических алгоритмах важно выделить:

  • Параметр цикла — величину, которая изменяется на каждом шаге и определяет продолжительность выполнения цикла.
  • Начальное и конечное значения параметра цикла** — устанавливают, когда цикл начнётся и закончится.
  • Шаг цикла — на сколько изменяется параметр при каждом повторении.

Циклический алгоритм включает:

  • Подготовку цикла — установку начальных значений параметра цикла.
  • Тело цикла — действия, которые выполняются многократно.
  • Условие продолжения цикла — проверку на необходимость завершения цикла.

Циклы бывают с предусловием (условие проверяется перед началом тела цикла) и с постусловием (условие проверяется после выполнения тела цикла).

Способы описания алгоритмов:

  • Символьный — используется специальный язык или символы.
  • Словесный — понятный для исполнителя-человека и применяется, когда команды выполняются в естественном порядке.
  • Графический (блок-схемы) — представляет алгоритм в виде последовательности геометрических фигур, каждая из которых обозначает конкретное действие.

Современные языки программирования обрабатывают разные типы данных:

  1. Числовые — с которыми выполняются алгебраические операции (сложение, вычитание и т.д.).
  2. Логические — для них применяются логические операции (инверсия, дизъюнкция, конъюнкция и т.д.).
  3. Строковые — упорядоченные последовательности символов, используемые для работы с текстом, с возможностью выполнять операции, такие как конкатенация строк, дублирование, поиск и замена подстрок.

Типы задач для исполнителя «Редактор»:

  1. Определение итоговой строки после выполнения команд исполнителя.
  2. Определение начальной строки по известной итоговой строке.
  3. Анализ итоговой строки после выполнения команд (например, подсчёт суммы цифр, проверка делимости, поиск простых чисел).

Способы решения подобных задач:

  • Аналитический
  • Алгебраический
  • С использованием языка программирования Python
  • С помощью электронных таблиц

Вот основные инструменты языка Python:

Цикл while:

Цикл while позволяет выполнять блок кода многократно, пока выполняется определённое условие. Внутри цикла задаётся условие, которое проверяется перед каждым новым повторением. Как только условие перестаёт выполняться, цикл завершается. Например:

Этот код будет выводить значение переменной count, начиная с нуля, пока оно меньше пяти. При каждом повторении count увеличивается на единицу. Когда count достигает 5, цикл останавливается.

Оператор if:

Оператор if проверяет, выполняется ли какое-то условие, и, если оно истинно (то есть True), выполняет блок кода. Это позволяет программе принимать решения на основе условий. Например:

В этом примере, если number больше 5, будет выполнен первый блок, иначе — блок после else.

Метод replace:

Метод replace используется для замены одной подстроки на другую в строке. Это полезно, когда нужно изменить определённые части текста. Например:

Этот код заменит слово "мир" на "Python" в строке text, и результат будет "Привет, Python!".

Метод count:

В Python метод count используется для подсчёта количества вхождений определённого элемента (например, символа или подстроки) в строке или списка. Он возвращает целое число, которое показывает, сколько раз искомый элемент встречается в данной строке или списке.

Допустим, у нас есть строка, и мы хотим узнать, сколько раз в ней встречается определённое слово или символ:

Здесь text.count("hello") подсчитает, сколько раз слово "hello" встречается в строке text. Результат будет 2, так как слово "hello" встречается дважды.

Перейдём к примеру решения прототипов задач:

Разберём задачу №12 ЕГЭ 2025 из демоверсии ФИПИ:

Исполнитель Редактор получает на вход строку цифр и преобразовывает её.
Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
A) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 0527150.
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.

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

НАЧАЛО
   ПОКА нашлось (11111) ИЛИ нашлось (888)
      ЕСЛИ нашлось (11111)
         ТО заменить (11111, 88)
      ИНАЧЕ заменить (888, 8)
   КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

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

Решим с помощью программирования:

  1. Открываем наш редактор кода (IDLE или PyCharm), анализируем условие:
    нам дана строка, которой состоит из 81 идущей подряд цифры 1. К этой строке нам нужно применить программу, которая дана в условии, и в ответ записать полученный результат.
  2. Начинаем писать код:
    • Cначала создается строка s (s = 81 * '1'), состоящая из 81 символа '1'. Эта строка выглядит так: '111111111111...111' (81 раз). Это инициализирует строку, которая будет обрабатываться далее в цикл
    • Потом пишем цикл ПОКА (while '11111' in s or '888' in s:): этот цикл while выполняется до тех пор, пока в строке s встречается либо последовательность '11111', либо последовательность '888'. Как только ни одной из этих последовательностей не останется в строке, цикл завершится
    • Дальше оператор ЕСЛИ (if '11111' in s: s = s.replace('11111', '88', 1)): внутри цикла while есть проверка: если в строке s найдена последовательность '11111', то она заменяется на '88' один раз с помощью метода replace. Метод s.replace('11111', '88', 1) находит первое слева вхождение '11111' и заменяет его на '88'
    • ИНАЧЕ (else: s = s.replace('888', '8', 1)): если в строке не нашлось '11111', выполняется альтернативное действие: первое вхождение последовательности '888' заменяется на '8'
    • Когда цикл завершает работу (то есть ни '11111', ни '888' больше не встречаются в строке), выполняется print(s), и программа выводит итоговое значение строки s.

В ответ записываем результат работы программы (881)

Ответ: 881

Важное примечание: функция s.replace(str1, str2, 1) заменяет в строке s подстроку str1 на строку str2 один раз. Если нужно заменить все вхождения подстроки str1, то третий аргумент не пишется.

Посмотрим задание с досрочной волны (I) 2023-го года:

Исполнитель Редактор получает на вход строку цифр и преобразовывает её.

Исполнитель Редактор получает на вход строку, начинающуюся на 3 и содержащую далее n цифр 5 (n > 3).

На выполнение Редактору дана следующая программа:

НАЧАЛО
   ПОКА нашлось(25) ИЛИ нашлось(355) ИЛИ нашлось(555)
      ЕСЛИ нашлось(25)
         ТО заменить(25, 3)
      КОНЕЦ ЕСЛИ
      ЕСЛИ нашлось(355)
         ТО заменить(355, 52)
      КОНЕЦ ЕСЛИ
      ЕСЛИ нашлось(555)
         ТО заменить(555, 23)
      КОНЕЦ ЕСЛИ
   КОНЕЦ ПОКА
КОНЕЦ

Найдите минимальное значение n, при котором сумма цифр конечной строки будет равна 27.

Решим с помощью программирования:

  1. Нам дана строка, которая начинается с цифры «3» и далее содержит n цифр «5» (где n > 3). Мы должны применить к этой строке данную программу и определить минимальное значение n, при котором сумма цифр конечной строки будет равна 27
  2. Сначала запускается цикл for, который перебирает значения n от 3 до 99. На каждом шаге создается строка s, начинающаяся с символа «3» и содержащая n цифр «5». Например, если n = 4, строка будет «35555». Эта строка инициализирует начальное состояние, которое будет обрабатываться далее.
  3. Далее идет цикл while, который выполняется, пока в строке s содержится хотя бы одна из подстрок: «25», «355» или «555». Как только этих подстрок больше не останется, цикл завершится. Внутри цикла while выполняется проверка: если в строке s найдена подстрока «25», то она заменяется на «3» один раз. Для этого используется метод replace, который находит первое слева вхождение «25» и заменяет его на «3».
  4. Если подстрока «25» не найдена, проверяется наличие подстроки «355». Если она найдена, строка «355» заменяется на «52» один раз. Опять же используется метод replace, который заменяет первое вхождение «355» на «52». Если ни «25», ни «355» не найдены, проверяется наличие «555». Если эта подстрока присутствует, то «555» заменяется на «23» один раз.
  5. После завершения цикла while (то есть когда в строке больше нет подстрок «25», «355» и «555»), программа вычисляет сумму значений всех цифр в строке s. Для этого мы умножаем количество «2» на 2, количество «3» на 3 и количество «5» на 5, и затем складываем эти произведения. Если итоговая сумма равна 27, программа выводит текущее значение n и завершает выполнение с помощью оператора break.
  6. Таким образом, программа находит и выводит минимальное значение n, при котором сумма цифр конечной строки равна 27.

Ответом на задние будет результат работы этой программы (16)

Ответ: 16

Разберём ещё одно задание:

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

НАЧАЛО
   ПОКА нашлось (5555)
      заменить (5555, 22)
      заменить (222, 5)
   КОНЕЦ ПОКА
КОНЕЦ

Решение (Аналитический способ):

  1. Чтобы понять принцип работы алгоритма, рассмотрим цепочку, состоящую из 12 пятерок – 555555555555.
  2. После выполнения первой итерации получаем: 2255555555, была произведена только одна замена, для второй замены не хватает двоек.
  3. После второй итерации получим: 2255555555 -> 22225555 -> 525555
  4. После третьей итерации получаем: 525555 -> 5222 -> 55. Таким образом, после выполнения трех итераций из двенадцати пятерок осталось только две.
    101 : 12 = 8, остаток 5. Таким образом, после применения этих трех итераций 8 раз к цепочке, состоящей из 101 пятерки, останется 8 * 2 + 5 = 21 пятерка.
  5. Далее применяем алгоритм еще 5 раз, получаем:
    555555555555555555555 –> … -> 55555555555 -> 225555555 -> 2222555 -> 52555

Ответ: 52555

Проанализируем следующий прототип задачи:

На вход приведённой ниже программе поступает строка, начинающаяся с символа «>», а затем содержащая 10 цифр 1, 20 цифр 2 и 30 цифр 3, расположенных в произвольном порядке. Определите сумму числовых значений цифр строки, получившейся в результате выполнения программы.

НАЧАЛО
ПОКА нашлось (>1) ИЛИ нашлось (>2) ИЛИ нашлось (>3)
   ЕСЛИ нашлось (>1)
      ТО заменить (>1, 22>)
      КОНЕЦ ЕСЛИ
   ЕСЛИ нашлось (>2)
      ТО заменить (>2, 2>)
      КОНЕЦ ЕСЛИ
   ЕСЛИ нашлось (>3)
      ТО заменить (>3, 1>)
   КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Решение (Аналитический способ):

  1. Замена «>1» на «22>»: каждая «1» превращается в «22», удваивая количество «2» в строке по сравнению с количеством «1».
  2. Замена «>2» на «2>»: эта замена не изменяет количество «2», оно остается прежним.
  3. Замена «>3» на «1>»: каждая «3» превращается в «1», так что итоговое количество «1» будет равно количеству «3» в исходной строке.
  4. Итоговые количества: количество «1» в финальной строке равно количеству «3» в исходной строке (30). Количество «2» равно количеству «1» в исходной строке, умноженному на 2 (40).
  5. Вычисление суммы: сумма числовых значений: 30 * 1 + 40 * 2 = 110

Ответ: 110

Разберём ещё один прототип:

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

НАЧАЛО
ПОКА нашлось (222) ИЛИ нашлось (888)
   ЕСЛИ нашлось (222)
      ТО заменить (222, 8)
      ИНАЧЕ заменить (888, 2)
   КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Решение (С использованием электронных таблиц):

В ячейку С1 нужно записать исходную строку любым образом. Для экономии времени можно воспользоваться функцией ПОВТОР

Далее нужно определить есть ли в данной строке подстроки “222”и “888”. Для этого можно использовать функцию НАЙТИ. Эта функция выдает ошибку, если подстрока не найдена.

Чтобы правильно обработать ошибку воспользуемся функцией ЕСЛИОШИБКА, которая в случае ошибки выдает 0, а при обнаружении подстроки его позицию. Для каждой подстроки воспользуемся отдельной ячейкой: например, в А2 - “222”, в В2 - “888”.

Теперь нужно построить строку, которая получится после первой итерации. Т.к. в исходной строке двоек нет в ячейке А2 получается 0, а в ячейке В2 – 1. Для этого используем функцию «ЕСЛИ» и вложим в нее функцию «ЗАМЕНИТЬ».

Для получения результата необходимо протянуть диапазон А2:С2 вниз до появления ошибки.

Ответ: 28

Разберём ещё одно задание:

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

НАЧАЛО
   ПОКА нашлось (01) ИЛИ нашлось (02) ИЛИ нашлось (03)
      заменить (01, 30)
      заменить (02, 101)
      заменить (03, 202)
   КОНЕЦ ПОКА
КОНЕЦ

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

Решение (Алгебраический способ решения):

  1. Для начала мы разбираемся, сколько цифр 1, 2 и 3 дают строки «01», «02» и «03» после всех замен.
  2. Рассмотрим строку «01». Она превращается в «30», что означает: одна единица дает одну тройку.
  3. Рассмотрим строку «02». Она сначала превращается в «101», а затем — в «130», так как после первой замены появляется «01», к которой можно применить замену еще раз. В итоге одна двойка дает одну единицу и одну тройку.
  4. Рассмотрим строку «03». Она сначала превращается в «202», а затем — в «2130», поскольку после первой замены появляется «02», к которой можно применить замену еще раз. В итоге одна тройка дает одну единицу, одну двойку и одну тройку.
  5. Пусть изначально в строке было X единиц, Y двоек и Z троек. Тогда в результате всех замен:
    • Из X единиц мы получим X троек.
    • Из Y двоек мы получим Y единиц и Y троек.
    • Из Z троек мы получим Z единиц, Z двоек и Z троек.
  6. На основе этого составим систему уравнений:
    • Первое уравнение: Y + Z = 20 (так как в итоге получится 20 единиц).
    • Второе уравнение: Z = 10 (так как в итоге получится 10 двоек).
    • Третье уравнение: X + Y + Z = 70 (так как в итоге получится 70 троек).
  7. Решив эту систему, мы находим, что X = 50, Y = 10, Z = 10.

Ответ: 50

Посмотрим, как решается ещё один подобный пример:

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

НАЧАЛО
ПОКА нашлось (333) ИЛИ нашлось (555)
ЕСЛИ нашлось (555)
ТО заменить (555, 3)
ИНАЧЕ заменить (333, 5)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

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

Решение (Аналитический способ решения):

  1. Чтобы понять принцип работы алгоритма, мы рассмотрим цепочку, состоящую из девяти пятерок: 555555555.
  2. После трехкратного выполнения алгоритма эта цепочка сократится до 333, а еще одно применение алгоритма даст одну пятерку.
  3. Таким образом, данный алгоритм преобразует 9 пятерок в одну пятерку.
  4. Разделим 65 на 9: 65 : 9 = 7 с остатком 2, то есть 63 пятерки преобразуются в 7 пятерок, и остаются еще две пятерки. В сумме получается 9 пятерок, которые, согласно пункту 2, преобразуются в одну пятерку.

Ответ: 5.

Приступим к разбору следующего прототипа задачи:

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

НАЧАЛО
ПОКА нашлось(01) ИЛИ нашлось(02) ИЛИ нашлось(03)
заменить(01, 2302)
заменить(02, 10)
заменить(03, 201)
КОНЕЦ ПОКА
КОНЕЦ

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

Решение (Алгебраический метод решения):

  1. Для начала разберемся, сколько цифр 1, 2 и 3 дают строки «01», «02» и «03» после всех замен.
  2. Рассмотрим строку «01». Она сначала превращается в «230», а затем — в «2310», так как после первой замены появляется «02», к которой можно применить замену еще раз. Таким образом, «01» дает одну 1, одну 2 и одну 3.
  3. Рассмотрим строку «02». Она превращается в «10», то есть одна «02» дает одну.
  4. Рассмотрим строку «03». Она сначала превращается в «201», а затем — в «22310», поскольку после первой замены появляется «02», к которой можно применить замену еще раз. В итоге «03» дает одну 1, две 2 и одну 3.
  5. Таким образом, мы получаем следующие результаты:
    • «01» дает одну 1, одну 2 и одну 3.
    • «02» дает одну 1.
    • «03» дает одну 1, две 2 и одну 3.
  6. Запишем это в виде системы уравнений:
    • Первое уравнение: X + Y + Z = 58 (количество 1 в итоговой строке).
    • Второе уравнение: X + 2Y = 23 (количество 2 в итоговой строке).
    • Третье уравнение: X + Z = 15 (количество 3 в итоговой строке).
  7. Решив эту систему, мы получаем: X = 7, Y = 43, Z = 8.

Ответ: 43

Рассмотрим ещё одну задачу в рамках этой темы:

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

НАЧАЛО
ПОКА нашлось (3333) ИЛИ нашлось (8888)
   ЕСЛИ нашлось (3333)
      ТО заменить (3333, 88)
      ИНАЧЕ заменить (8888, 33)
   КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Решение (С использованием электронных таблиц):

В ячейку С1 нужно записать исходную строку любым образом. Для экономии времени можно воспользоваться функцией ПОВТОР

Далее нужно определить есть ли в данной строке подстроки “3333”и “8888”. Для этого можно использовать функцию НАЙТИ. Эта функция выдает ошибку, если подстрока не найдена.

Чтобы правильно обработать ошибку воспользуемся функцией ЕСЛИОШИБКА, которая в случае ошибки выдает 0, а при обнаружении подстроки его позицию. Для каждой подстроки воспользуемся отдельной ячейкой: например, в А2 - “3333”, в В2 - “8888”.

Теперь нужно построить строку, которая получится после первой итерации. Т.к. в исходной строке троек нет в ячейке А2 получается 0, а в ячейке В2 – 1. Для этого используем функцию ЕСЛИ и вложим в нее функцию ЗАМЕНИТЬ.

Для получения результата необходимо протянуть диапазон А2:С2 вниз до появления ошибки.

Ответ: 888

Перейдём к следующему примеру для закрепления материала:

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

НАЧАЛО
ПОКА нашлось (222) ИЛИ нашлось (888)
ПОКА нашлось (555)
заменить (555, 8)
КОНЕЦ ПОКА
ЕСЛИ нашлось (222)
ТО заменить (222, 8)
ИНАЧЕ заменить (888, 2)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Дана строка, состоящая из 21 цифры, причем первые три цифры – двойки, остальные – пятерки. Какая строка получится в результате применения программы к данной строке?

Решение (Аналитический способ решения):

  1. Напомним, что тело цикла «ПОКА» выполняется, пока выполняется условие в этом цикле. Поэтому каждая тройка пятерок в исходной строке заменится на одну восьмерку, и на выходе из цикла получится строка 222888888.
  2. Далее произойдет замена трех двоек на одну восьмерку, в результате чего получим строку 8888888.
  3. Затем применим весь алгоритм два раза, при этом каждая тройка восьмерок заменится на двойку. В итоге получаем строку 228.

Ответ: 228.

Следующий пример:

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

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

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

Решение (Алгебраический метод):

  1. Для начала разберемся, сколько цифр 1, 2 и 3 дают строки «01», «02» и «03» после всех замен.
  2. Рассмотрим строку «01». Она превращается в «210», то есть одна «01» дает одну 1 и одну 2.
  3. Рассмотрим строку «02». Она сначала превращается в «3101», а затем — в «31210», так как после первой замены появляется «01», к которой можно применить замену еще раз. Таким образом, одна «02» дает две 1, одну 2 и одну 3.
  4. Рассмотрим строку «03». Она сначала превращается в «2012», затем — в «22102», и наконец — в «22131210», так как после каждой замены появляются «02» и «01», к которым можно применить замену еще раз. В итоге одна «03» дает три 1, три 2 и одну 3.
  5. Таким образом, получаем:
    • «01» дает одну 1 и одну 2.
    • «02» дает две 1, одну 2 и одну 3.
    • «03» дает три 1, три 2 и одну 3.
  6. Запишем это в виде системы уравнений:
    • Первое уравнение: X + 2Y + 3Z = 61 (количество 1 в итоговой строке).
    • Второе уравнение: X + Y + 3Z = 50 (количество 2 в итоговой строке).
    • Третье уравнение: Y + Z = 18 (количество 3 в итоговой строке).
  7. Решив эту систему, мы получаем: X = 18, Y = 11, Z = 7.
  8. Затем складываем общее количество единиц, двоек и троек, добавляем два нуля (в начале и в конце строки) и получаем итоговую длину строки: 38.

Ответ: 38

Разберём ещё один прототип:

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

НАЧАЛО
ПОКА нашлось (333) ИЛИ нашлось (999)
ЕСЛИ нашлось (333)
ТО заменить (333, 9)
ИНАЧЕ заменить (999, 3)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Решение (С использованием электронных таблиц):

В ячейку С1 нужно записать исходную строку любым образом. Для экономии времени можно воспользоваться функцией ПОВТОР

Далее нужно определить есть ли в данной строке подстроки “333” или “999”. Для этого можно использовать функцию НАЙТИ. Эта функция выдает ошибку, если подстрока не найдена.

Чтобы правильно обработать ошибку воспользуемся функцией ЕСЛИОШИБКА, которая в случае ошибки выдает 0, а при обнаружении подстроки его позицию. Для каждой подстроки воспользуемся отдельной ячейкой: например, в А2 - “333”, в В2 - “999”.

Теперь нужно построить строку, которая получится после первой итерации. Т.к. в исходной строке троек нет в ячейке А2 получается 0, а в ячейке В2 – 1. Для этого используем функцию «ЕСЛИ» и вложим в нее функцию «ЗАМЕНИТЬ».

Для получения результата необходимо протянуть диапазон А2:С2 вниз до появления ошибки.

Ответ: 339

Заключительный пример:

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

НАЧАЛО
ПОКА нашлось (888) ИЛИ нашлось (77)
ЕСЛИ нашлось (888)
ТО заменить (888, 8777)
ИНАЧЕ заменить (77,8)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

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

Решение (Аналитический способ):

  1. Проанализировав программу, мы можем сделать вывод, что каждая подстрока «888» будет заменяться на «8777». Подсчитаем, сколько таких замен будет в исходной строке: 100 : 3 = 33 и остаток 1. Будет произведено 33 замены, и в конце останется одна «8».
  2. Затем, поскольку в каждой подстроке «8777» присутствует «77», они будут заменены на «8». В итоге каждая подстрока «888» превращается в «887».
  3. Таким образом, подстрока «888» преобразуется в подстроку «887», и общее количество символов в строке остается неизменным. Было сделано 33 замены, поэтому количество семерок стало 33, а восьмерок осталось 67.

Ответ: 67, 33

Задания на тему «Исполнитель Редактор» в ЕГЭ по информатике требуют хорошего понимания алгоритмов и умения выполнять циклы с условиями и заменами. Эти задачи проверяют навыки последовательного выполнения инструкций и понимания конечного результата работы алгоритма.

Вот несколько ключевых моментов, которые помогут успешно справляться с подобными задачами:

  1. Выучите шаблон кода для подобных задач. Почти все задачи для «Редактора» строятся по одной схеме: строка, состоящая из повторяющихся символов, проходит через цикл замен. Понимание структуры цикла while и операторов if значительно упростит решение.
  2. Запомните базовые операции и методы для строк в Python. Команды, такие как replace (замена подстроки), count (подсчет символов) и условные операторы (if, else), составляют основу программ для таких задач. Умение пользоваться этими методами ускорит вашу работу.
  3. Потренируйтесь решать задачи вручную, прежде чем автоматизировать их с помощью Python. Простой анализ примеров поможет лучше понять логику алгоритма, а затем — убедиться в правильности своего кода. Иногда ручное выполнение 2-3 итераций замен позволяет быстро понять, что происходит с строкой.
  4. Используйте Python для автоматизации и проверки результата. Python идеально подходит для решения таких задач, так как позволяет быстро выполнять замены, циклы и подсчеты. Простой шаблон с использованием for и while поможет вам решать задачи гораздо быстрее.
  5. Запомните порядок операций и избегайте лишних действий. Например, при множественных заменах важно понимать, что сначала выполняются операции в рамках одного условия, а затем переходит к следующему. Сложные замены требуют тщательного контроля над порядком выполнения команд.
  6. Будьте внимательны к условиям задач и проверяйте ответ. Проверяйте, что полученный результат соответствует условиям задачи, особенно если вас просят найти минимальное значение параметра или конечное состояние строки.
  7. Не забывайте о теоретических основах и законах логики. Иногда понимание основ логики и порядков операций позволяет сократить алгоритм и быстрее дойти до результата.

Желаем удачи на экзамене!

Поделиться страницей

Это полезно

Теория вероятностей на ЕГЭ-2025 по математике
В варианте ЕГЭ-2025 две задачи по теории вероятностей — это №4 и №5. По заданию 5 в Интернете почти нет доступных материалов. Но в нашем бесплатном мини-курсе все это есть.
ЕГЭ Математика
Олимпиада ОММО:
100 баллов за 5 задач