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