Задание №17: Обработка целочисленных последовательностей
Основные типы и прототипы задания №17:
Поиск пар элементов последовательности
Тройки и кортежи чисел
Фильтрация по делимости и остаткам
Условие задания
В файле 17-428.txt содержится последовательность натуральных чисел, не превышающих 100 000. Определите количество троек элементов последовательности, для которых выполняются следующие условия:
– в тройке есть трёхзначные числа;
– в тройке не более одного числа, у которого остаток от деления на 5 равен остатку от деления на 7 минимального элемента всей последовательности;
– в тройке не менее двух чисел, у которых остаток от деления на 7 равен остатку от деления на 5 максимального элемента всей последовательности.
В ответе запишите два числа: сначала количество найденных троек, затем среднее арифметическое сумм элементов этих троек, округленное до ближайшего меньшего целого числа. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
– в тройке есть трёхзначные числа;
– в тройке не более одного числа, у которого остаток от деления на 5 равен остатку от деления на 7 минимального элемента всей последовательности;
– в тройке не менее двух чисел, у которых остаток от деления на 7 равен остатку от деления на 5 максимального элемента всей последовательности.
В ответе запишите два числа: сначала количество найденных троек, затем среднее арифметическое сумм элементов этих троек, округленное до ближайшего меньшего целого числа. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
Ответ:
591 33559
Шаблон решения на Python
# === Задание 17: Обработка числовой последовательности ===
with open('17.txt') as f:
a = [int(x) for x in f]
# Контрольное значение (например, макс. элемент, оканчивающийся на 13):
max_target = max(x for x in a if abs(x) % 100 == 13)
ans = []
for i in range(len(a) - 1):
pair = (a[i], a[i+1])
if sum(1 for x in pair if abs(x) % 100 == 13) == 1:
if (pair[0]**2 + pair[1]**2) <= max_target**2:
ans.append(pair[0] + pair[1])
print(f"Количество пар: {len(ans)}, Максимальная сумма: {max(ans)}")