Решение: Редактор и строки цифр
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Команда «заменить (v, w)» заменяет первое слева вхождение цепочки v на цепочку w, а команда «нашлось (v)» проверяет наличие цепочки v в текущей строке. Если в строке нет вхождения v, команда «заменить» не изменяет строку.
Программа выполняется следующим образом:
НАЧАЛО
ПОКА нашлось (39) ИЛИ нашлось (999) ИЛИ нашлось (7777)
ЕСЛИ нашлось (39)
ТО заменить (39, 3)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (999)
ТО заменить (999, 7)
ИНАЧЕ заменить (7777, 9)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
На вход программе поступает строка, начинающаяся с цифры «3», а затем содержащая $n$ цифр «9», где $3 < n < 10000$. Определите наибольшее возможное значение суммы числовых значений цифр в строке, которая может быть результатом выполнения программы.
Решение по шагам
3 шагаДля каждого значения $n$ строим начальную строку $3$ и $n$ цифр $9$, затем буквально выполняем команды программы в указанном порядке: сначала при наличии заменяем первое вхождение $39$, после этого заменяем первое вхождение $999$ либо, если его нет, первое вхождение $7777$.
После каждой итерации проверяем условие цикла. Выполнение прекращается, когда в строке одновременно отсутствуют цепочки $39$, $999$ и $7777$.
Перебор всех допустимых значений $n$ от $4$ до $9999$ и подсчёт суммы цифр конечной строки дают наибольшее значение $42$.
Где здесь ошибаются
Заменяют все вхождения цепочки сразу, хотя команда заменяет только первое слева вхождение.
Не учитывают, что после первой команды в той же итерации выполняется вторая проверка.
Продолжают заменять строку после исчезновения всех трёх цепочек, являющихся условием цикла.