Задание №17 — Обработка числовой информации
В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от −10 000 до 10 000 включительно. Определите и запишите в ответе сначала количество пар элементов последовательности, в которых хотя бы одно число делится на 3, а сумма элементов пары не более максимального элемента последовательности, кратного 3. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Правильный ответ
2439 998
Пояснение
Решение:
Задача решается в два прохода. Сначала находим порог — максимальный элемент всей последовательности, кратный 3; в этом файле он равен 999. Затем перебираем пары соседних элементов и отбираем те, у которых хотя бы одно число делится на 3, а сумма пары не превосходит найденного порога.
Проверка делимости на 3 через остаток в Python корректна и для отрицательных чисел: тогда и только тогда, когда кратно 3.
a = [int(s) for s in open('52900_17.txt')]
m = max(x for x in a if x % 3 == 0) # 999 - порог
count = 0
best = None
for x, y in zip(a, a[1:]):
if (x % 3 == 0 or y % 3 == 0) and x + y <= m:
count += 1
if best is None or x + y > best:
best = x + y
print(count, best) # 2439 998Подходящих пар 2439, наибольшая из их сумм равна 998 (это меньше порога 999, поэтому условие выполнено).Ответ: 2439 998