В файле содержится последовательность целых чисел. Её элементы по модулю не превышают 100 000 включительно.
Определите количество троек элементов последовательности, в которых ровно два элемента из трёх оканчиваются на 9 и являются четырёхзначными числами, а сумма всех элементов тройки меньше максимального элемента последовательности, оканчивающегося на 9 и являющегося четырёхзначным числом.
В ответе запишите количество найденных троек, затем максимальную из сумм элементов таких троек.
В данной задаче под тройкой подразумеваются три идущих подряд элемента последовательности.
Ответ:
(количество найденных троек) (максимальную из сумм элементов таких троек)
Резервная волна ЕГЭ по информатике 22.06.2026 – задание №17
Решение:
Решение —
Для решения задачи обработаем последовательность чисел с помощью Python.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
f = open('17.txt') a = [int(x) for x in f.readlines()] mx = max([x for x in a if abs(x) % 10 == 9 and len(str(abs(x))) == 4]) b = [] for i in range(len(a) - 2): if ((abs(a[i]) % 10 == 9 and len(str(abs(a[i]))) == 4) + (abs(a[i+1]) % 10 == 9 and len(str(abs(a[i+1]))) == 4) + (abs(a[i+2]) % 10 == 9 and len(str(abs(a[i+2]))) == 4)) == 2: if a[i] + a[i+1] + a[i+2] < mx: b.append(a[i] + a[i+1] + a[i+2]) print(len(b), max(b)) |
Разберём программу.
Сначала считываем все числа из файла в список a:
|
1 |
a = [int(x) for x in f.readlines()] |
Затем находим максимальный элемент последовательности, который является четырёхзначным числом и оканчивается на 9:
|
1 2 |
mx = max([x for x in a if abs(x) % 10 == 9 and len(str(abs(x))) == 4]) |
Использование abs(x) позволяет корректно проверять также отрицательные числа.
Далее перебираем все тройки подряд идущих элементов:
|
1 |
for i in range(len(a) - 2): |
Условие
|
1 2 3 |
((abs(a[i]) % 10 == 9 and len(str(abs(a[i]))) == 4) + (abs(a[i+1]) % 10 == 9 and len(str(abs(a[i+1]))) == 4) + (abs(a[i+2]) % 10 == 9 and len(str(abs(a[i+2]))) == 4)) == 2 |
проверяет, что ровно два элемента из трёх являются четырёхзначными и оканчиваются на 9.
Затем проверяем второе условие задачи:
|
1 |
if a[i] + a[i+1] + a[i+2] < mx: |
То есть сумма элементов тройки должна быть меньше найденного ранее значения mx.
Если оба условия выполнены, сохраняем сумму всех трёх элементов:
|
1 |
b.append(a[i] + a[i+1] + a[i+2]) |
В конце выводим:
- количество подходящих троек —
len(b); - максимальную сумму среди них —
max(b).
|
1 |
print(len(b), max(b)) |
Ответ: 9 6917