Разбор задания №12 из демоверсии ЕГЭ по информатике 2024 года. Задание повышенного уровня, проверяющее умение исполнять алгоритм для конкретного исполнителя с фиксированным набором команд. На выполнение отводится 6 минут.
Условие задачи
Исполнитель — редактор. На вход программе поступает строка, начинающаяся с цифры 5, а затем содержащая N цифр 2. Необходимо определить наибольшее значение переменной N, при котором сумма цифр в строке, получившейся в результате выполнения программы, равна 64. Значение N находится в диапазоне (3; 10000).
Алгоритм решения
Для решения задачи используется цикл for, перебирающий значения N от 4 до 10000. В каждом проходе цикла:
- Создаётся строка, начинающаяся с «5» и содержащая N двоек: ‘5’ + ‘2’ * N
- Реализуется алгоритм замены подстрок:
while '52' in s: s = s.replace('52', '11', 1) while '422' in s: s = s.replace('422', '5', 1) while '1122' in s: s = s.replace('1122', '25', 1)
Этот фрагмент кода последовательно заменяет подстроки «52», «422» и «1122» на «11», «5» и «25» соответственно. Замена производится только один раз за итерацию while.
- Вычисляется сумма цифр в результирующей строке с помощью функции sum и map:
sum(map(int, list(s)))
Функция map преобразует каждый символ строки в целое число, а sum суммирует полученные числа.
- Если полученная сумма равна 64, значение N выводится на экран. Так как необходимо найти наибольшее значение N, последнее найденное значение будет искомым решением.
Решение на Python
Полный код решения на Python:
for n in range(4, 10000):
s = '5' + '2' * n
while '52' in s:
s = s.replace('52', '11', 1)
while '422' in s:
s = s.replace('422', '5', 1)
while '1122' in s:
s = s.replace('1122', '25', 1)
if sum(map(int, list(s))) == 64:
print(n)
break
В результате выполнения программы будет найдено наибольшее значение N, удовлетворяющее условию задачи. Решение основано на переборе значений N и пошаговом выполнении алгоритма замены подстрок с последующим вычислением суммы цифр.