В файле содержится последовательность целых чисел.
Её элементы могут принимать целые значения от −100 000 до 100 000 включительно.
Определите количество пар последовательности, в которых сумма элементов меньше минимального положительного элемента последовательности, кратного 52.
Гарантируется, что такой элемент в последовательности есть.
В ответе запишите количество найденных пар, затем абсолютное значение максимальной из сумм элементов таких пар.
В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Решение
🔹 Шаг 1. Считываем числа из файла
f = open("17.txt")
nums = [int(x) for x in f]
# 1. минимальный положительный элемент, кратный 52
min_52 = min(x for x in nums if x > 0 and x % 52 == 0)
count = 0
max_sum = None
# 2. проверка пар соседних элементов
for i in range(len(nums) - 1):
s = nums[i] + nums[i + 1]
if s < min_52:
count += 1
if max_sum is None or s > max_sum:
max_sum = s
# 3. вывод результата
print(count, abs(max_sum))
📌 Что происходит:
Теперь
nums — это вся числовая последовательность.
🔹 Шаг 2. Находим минимальный положительный элемент с нужным делителем
min_52 = min(x for x in nums if x > 0 and x % 52 == 0)
📌 Что происходит: перебираем все числа, оставляем положительные и кратные нужному делителю, выбираем минимальное. По условию такой элемент гарантированно есть.
🔹 Шаг 3. Подготавливаем переменные для подсчёта
count = 0
max_sum = None
📌 Что означает:
count — количество подходящих пар (или троек);
max_sum — лучший найденный результат (сумма или квадрат суммы), пока неизвестен.
🔹 Шаг 4. Проверяем пары соседних элементов
for i in range(len(nums) - 1):
s = nums[i] + nums[i + 1]
if s < min_52:
count += 1
if max_sum is None or s > max_sum:
max_sum = s
📌 Что происходит: перебираем соседние пары (nums[i], nums[i+1]), проверяем условие и обновляем count и максимальную сумму (или квадрат суммы).
🔹 Шаг 5. Выводим ответ
print(count, abs(max_sum))
📌 Что выводим: сначала количество найденных пар (или троек), затем второе число из ответа по условию (для этого варианта: 5013 626).