Решение
🔹 Шаг 1. Считываем числа из файла
f = open("17.txt")
s = [int(x) for x in f]
# Проверяет, равна ли третья цифра с конца нулю
def f(x):
return abs(x) >= 100 and (abs(x) // 100) % 10 == 0
# Количество чётных чисел
k = len([x for x in s if x % 2 == 0])
count = 0
mx = -10**20
# Проверяем соседние пары
for i in range(len(s) - 1):
x, y = s[i], s[i + 1]
if (f(x) or f(y)) and (x * y) % k == 0:
count += 1
if x + y > mx:
mx = x + y
print(count, abs(mx))
📌 Что происходит:
Теперь
s — это вся числовая последовательность.
🔹 Шаг 2. Проверка: третья с конца цифра — ноль
# Проверяет, равна ли третья цифра с конца нулю
def f(x):
return abs(x) >= 100 and (abs(x) // 100) % 10 == 0
📌 Результат: выполняем шаг алгоритма по условию задачи.
🔹 Шаг 3. Считаем количество чётных элементов
# Количество чётных чисел
k = len([x for x in s if x % 2 == 0])
📌 Что происходит: по условию вычисляем опорное значение по всей последовательности (минимум или максимум с нужным свойством).
🔹 Шаг 4. Подготавливаем переменные для подсчёта
count = 0
mx = -10**20
📌 Что означает:
count — количество подходящих пар (или троек);
mx — лучший найденный результат (сумма или квадрат суммы), пока неизвестен.
🔹 Шаг 5. Проверяем пары соседних элементов
# Проверяем соседние пары
for i in range(len(s) - 1):
x, y = s[i], s[i + 1]
if (f(x) or f(y)) and (x * y) % k == 0:
count += 1
if x + y > mx:
mx = x + y
📌 Результат: выполняем шаг алгоритма по условию задачи.
🔹 Шаг 6. Выводим ответ
print(count, abs(mx))
📌 Что выводим: сначала количество найденных пар (или троек), затем второе число из ответа по условию (для этого варианта: 3 86323).