Задание с сайта Полякова К.Ю.
Досрочный ЕГЭ-2025

сразу Главное !!!
когда пишете код для этого задания, то помните!!!
вы пересохраняете значение строки!!!
пример:
s = s.replace()
это очень важно!!!
теория по Python
заменить (v, w) означает, что запись должна быть такой:
s = s.replace(v, w, 1)
ВАЖНО!! последний аргумент единица 1 - первое вхождение
теория по Python
нашлось (v) означает, что мы ищем через in
v in s
теория по Python
пока - while
если - if
естественно, тут мы работаем со строкой
код нужно писать полностью мониторя, что дано в условии
главное, не ошибитесь при ручном интерпретировании кода
вот код для данной задачи:
всегда начинаем с оформления основной строки
На вход приведённой выше программе поступает строка, начинающаяся с цифры «3», а затем содержащая n цифр «1» (3 < n < 10000).
используем цикл for
for n in range(3, 10001):
s = '3' + '1' * n
далее все, как дано в условии
for n in range(3, 10001):
s = '3' + '1' * n
while '31' in s or '211' in s or '1111' in s:
if '31' in s:
s = s.replace('31', '1', 1)
if '211' in s:
s = s.replace('211', '13', 1)
if '1111' in s:
s = s.replace('1111', '2', 1)
ну и главный вопрос задачи
Определите наименьшее значение n, при котором сумма цифр в строке, получившейся в результате выполнения программы, равна 15
будьте внимательны к отступам!!! Python ошибок не прощает
for n in range(3, 10001):
s = '3' + '1' * n
while '31' in s or '211' in s or '1111' in s:
if '31' in s:
s = s.replace('31', '1', 1)
if '211' in s:
s = s.replace('211', '13', 1)
if '1111' in s:
s = s.replace('1111', '2', 1)
sm = sum(map(int, s))
if sm % 15 == 0:
print(n)
break
запускаете
ответ 50
как работает эта часть кода
sm = sum(map(int, s))
в переменную sm сохраняем сумму чисел, которые получаем при применении специальной функции map
она работает так
map(тип данных, строка)
это встроенная функция, напрямую обращается к главным классам Python
просто запомните, как работает в контексте данной задачи
имеет место применения еще и в других задачах ЕГЭ