Демовариант ЕГЭ по информатике 2022 года, задание 12

Демовариант ЕГЭ по информатике 2022 года, задание 12

Задача

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

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

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

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

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

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

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

Цикл

ПОКА условие

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

КОНЕЦ ПОКА

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

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

ЕСЛИ условие

ТО команда 1

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

КОНЕЦ ЕСЛИ

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

НАЧАЛО

ПОКА нашлось (2222) ИЛИ нашлось (8888)

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

ТО заменить (2222, 88)

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

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Решение (аналитическое)

Проанализируем алгоритм.

Редактор будет выполнять команды только тогда, когда в строке встречается цепочка «2222» или цепочка «8888».

Если в строке есть «2222», то тогда эта цепочка заменяется на «88».

Если в строке нет цепочки «2222», но есть «8888», то цепочка «8888» заменяется на «22», замена выполняется 1 раз.

По условию имеем 8...8 (70).

Теперь вернемся к условию программы. Условие цикла истинно, а условие ЕСЛИ нашлось 2222 ложно. Условие если в строке нет цепочки «2222», но есть «8888» истинно, производим замену:

ege 2020 10

Выполняем следующую шаг цикла: условие цикла истинно, а условие ЕСЛИ нашлось 2222 ложно. Условие если в строке нет цепочки «2222», но есть «8888» истинно, производим замену:

ege 2020 10 1

Выполняем третий шаг цикла: условие цикла истинно, и условие ЕСЛИ нашлось 2222 истинно. Выполняем замену:

ege 2020 10 2

Таким образом, за три шага цикла мы получили из 70 «восьмерок» 64 - 6 восьмерок исчезли. Вычислим, сколько раз можно вычесть из исходных семидесяти восьмерок по 6 восьмерок:

64 / 6 = 10, остаток 4

Остаток 4 означает, что после десяти шагов цикла остались еще четыре восьмерки, которые на следующем шаге заменятся на двойки - 22.

Таким образом, после выполнения алгоритма, остаются две цифры «2».

Ответ: 22.

Решение (программа, Python

Алгоритм решения данной задачи прост:

  1. Создадим текстовую строку.
  2. Пока в строке буду встречаться цепочки "2222" или "8888" будем выполнять замену:
    • если в сторе встретится цепочка "2222", то заменим ее на "88";
    • если в строке встретится цепочка "8888", то заменим ее на "22".

Для замены будем использовать метод replace(), который возвращает копию строки, в которой все вхождения подстроки заменяются другой подстрокой.

Метод имеет следующий синтаксис:

 str.replace(old, new [, count])

Метод может принимать максимум 3 параметра: old ‒ старая подстрока, которую нужно заменить; new ‒ новая подстрока, которая заменит старую подстроку; count (необязательно) ‒ сколько раз вы хотите заменить старую подстроку новой.

Примечание: Если число не указано, метод заменяет все вхождения старой подстроки новой.

Команда возвращает копию строки, в которой старая подстрока заменяется новой подстрокой.

s = '8'*70
while ('2222' in s) or ('8888' in s):
    if '2222' in s:
        s = s.replace('2222','88',1)
    if '8888' in s:
        s = s.replace('8888','22',1)
print(s)

Ответ: 22.

Выберите соответствующий номер задания в демонстрационном варианте ЕГЭ 2022 года

Информация

Все изображения, размещенные на сайте, изготовлены автором самостоятельно, а также взяты в сети Интернет из тех изображений, которые находятся в свободном доступе. Поиск изображений осуществлялся посредством "Яндекс. Картинки".

Индекс цитирования

Проект при поддержке компании RU-CENTER Рейтинг@Mail.ru

Версия сайта для слабовидящих