Решение: Редактор и замены строк
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Команда «заменить (v, w)» заменяет в строке первое слева вхождение цепочки v на цепочку w, а команда «нашлось (v)» проверяет наличие цепочки v в строке, не изменяя её.
Дана программа:
НАЧАЛО
ПОКА нашлось (78) ИЛИ нашлось (688) ИЛИ нашлось (8888)
ЕСЛИ нашлось (78)
ТО заменить (78, 8)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (688)
ТО заменить (688, 87)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (8888)
ТО заменить (8888, 6)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
На вход программе поступает строка, начинающаяся с цифры «7», а затем содержащая n цифр «8» (3 < n < 10 000). Определите наименьшее значение n, при котором сумма цифр в строке, получившейся в результате выполнения программы, равна 44.
Решение по шагам
3 шагаДля каждого n формируем исходную строку $7$ идущих подряд цифр $8$, затем точно моделируем все проходы цикла и считаем сумму цифр итоговой строки.
$$s_n = 7\underbrace{88\ldots8}_{n\text{ цифр}}$$При моделировании на каждом проходе проверяем условия в указанном порядке и заменяем только первое найденное вхождение каждой цепочки. Перебор начинается с $n=4$.
Для всех значений $4 \leq n < 57$ сумма цифр итоговой строки не равна 44. При $n=57$ после завершения программы сумма цифр равна 44.
Где здесь ошибаются
Заменять все вхождения цепочки вместо только первого слева.
Проверять условия цикла после каждой команды, а не после выполнения всего тела цикла.
Выполнять команды ЕСЛИ как взаимоисключающие, хотя в программе это три независимые проверки.