Найти тему
Просто решаем всё

ЕГЭ информатика - задание 12 (выполнение алгоритмов для исполнителей) - самое простое задание

Оглавление

Добрый день!

Задание 12 стало одним из простейших, когда разрешили пользоваться Python для решения любых задач, а не только последних, как раньше.

Дело в том, что нужная вам программа уже написана в тексте задания алгоритмическим языком, остается только "перевести" ее на язык Python. А сделать это очень легко, имея минимальные навыки и примеры ниже "в голове".

Пример 1

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

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

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

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

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

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

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

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

НАЧАЛО

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

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

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

А решение будет таким:

Решение задачи по теме 12 (выполнение алгоритмов для исполнителей)
Решение задачи по теме 12 (выполнение алгоритмов для исполнителей)

Ответ: 28

Пример 2 (посложнее)

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

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

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

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

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

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

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

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

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

НАЧАЛО

ПОКА нашлось (>1) ИЛИ нашлось (>2) ИЛИ нашлось (>0)

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

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

КОНЕЦ ЕСЛИ

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

ТО заменить (>2, 2>)

КОНЕЦ ЕСЛИ

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

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

На вход приведённой выше программе поступает строка, начинающаяся с символа ">", а затем содержащая 39 цифр "0", n цифр "1" и 39 цифр "2", расположенных в произвольном порядке.

Определите наименьшее значение n, при котором сумма числовых значений цифр строки, получившейся в результате выполнения программы, является простым числом.

-2

Посмотрим, что выведет эта программа для n=1 (мы задали n=1 сами):

-3

Мы не получили сумму в конце, значит, при n=1 сумма не является простым числом. Теперь мы можем подставлять значения n=2,3,4,5,6 и т.д., но если n большое число, перебирать придется долго. И текст программы выглядит громоздко с комментариями, давайте уберем их и вложим текст программы в цикл перебора n (заодно уберем вывод строк и будем сразу выводить пару n и sum):

-4

Выглядит легче, не правда ли? А еще мы получили ответ - программа выдает все значения n, при которых сумма цифр результирующей строки является простым числом. Нам нужно минимальное n (по условию задачи), значит ответ - 5 (n мы перебираем от 1 до 99, этот диапазон можно расширить, мы выбираем его по своему желанию). Поскольку мы двигаемся от минимального n, то самое первое число, которое даст нам простую сумму, будет наименьшим.

Ответ: 5

Более простые задачи этой темы можно решать и без программирования, но в случае примера 2 я очень сомневаюсь, что кому-то удастся безошибочно найти решение без программы. Могу привести решение в Excel, но сразу могу сказать, что времени оно займет больше.

Всего доброго!