(А. Михайлов) В файле содержится последовательность целых чисел.
Её элементы могут принимать целые значения от -10000 до 10000 включительно.
Определите количество пар элементов последовательности, в которых ровно один элемент является положительным трёхзначным числом, а сумма элементов пары строго больше максимального элемента всей последовательности, который кратен 13 и оканчивается на 5.
Гарантируется, что такой элемент в последовательности есть.
В ответе запишите два числа: сначала количество найденных пар, затем максимальную сумму элементов таких пар.
В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Решение
🔹 Шаг 1. Считываем числа из файла
f = open("17.txt")
nums = [int(x) for x in f]
# 1. максимальный элемент, кратный 13 и оканчивающийся на 5
max_13_5 = max(x for x in nums if x % 13 == 0 and x % 10 == 5)
count = 0
max_sum = 0
# 2. проверка пар соседних элементов
for i in range(len(nums) - 1):
a, b = nums[i], nums[i + 1]
if (100 <= a <= 999) ^ (100 <= b <= 999) and a + b > max_13_5:
count += 1
max_sum = max(max_sum, a + b)
# 3. вывод результата
print(count, max_sum)
📌 Что происходит:
Теперь
nums — это вся числовая последовательность.
🔹 Шаг 2. Находим максимальный элемент, кратный 13 и оканчивающийся на 5
max_13_5 = max(x for x in nums if x % 13 == 0 and x % 10 == 5)
📌 Что происходит: по условию вычисляем опорное значение по всей последовательности (минимум или максимум с нужным свойством).
🔹 Шаг 3. Подготавливаем переменные для подсчёта
count = 0
max_sum = 0
📌 Что означает:
count — количество подходящих пар (или троек);
max_sum — лучший найденный результат (сумма или квадрат суммы), пока неизвестен.
🔹 Шаг 4. Проверяем пары: ровно одно положительное трёхзначное число
for i in range(len(nums) - 1):
a, b = nums[i], nums[i + 1]
if (100 <= a <= 999) ^ (100 <= b <= 999) and a + b > max_13_5:
count += 1
max_sum = max(max_sum, a + b)
📌 Что происходит: по условию вычисляем опорное значение по всей последовательности (минимум или максимум с нужным свойством).
🔹 Шаг 5. Выводим ответ
print(count, max_sum)
📌 Что выводим: сначала количество найденных пар (или троек), затем второе число из ответа по условию (для этого варианта: 28 10645).