напиши код на питоне (М. Шагитов) В файле 17-316.txt содержится последовательность целых чисел. Элементы последовательности - четырёхзначные натуральные числа. Назовём два четырёхзначных числа хорошей парой, если они оба чётные, а их сумма заканчивается на 44. Найдите все тройки элементов последовательности, в которых есть хотя бы одна хорошая пара, а сумма всех чисел тройки больше, чем максимальный элемент последовательности, кратный 202. В ответе запишите количество найденных троек, затем минимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
Решение задачи и код на Python (М. Шагитов стиль)
Задача требует:
- рассматривать все тройки подряд идущих элементов;
- в тройке должна быть хотя бы одна «хорошая пара» из двух чётных четырёхзначных чисел, чья сумма оканчивается на 44;
- сумма тройки должна быть больше максимального элемента последовательности, кратного 202;
- вернуть количество таких троек и минимальную сумму среди них.
Пояснение к алгоритму:
- читаем файл 17-316.txt, берем только четырёхзначные натуральные числа (1000..9999), чтобы соответствовать условиям.
- находим максимальный элемент последовательности, кратный 202 (если таких элементов нет, условие по сумме считается как выполненное).
- для каждой тройки подряд элементов проверяем:
- существует ли пара из тройки, удовлетворяющая условиям: оба числа чётные и (a+b) оканчивается на 44. Проверяем пары (1–2), (1–3), (2–3).
- сумма тройки больше max_множитель_202 (или если таких элементов нет, считаем условие сумм выполненным).
- считаем подходящие тройки и запоминаем минимальную сумму среди них.
- выводим: количество троек и минимальную сумму (если подходящих троек нет — можно вывести 0 0).
Код:
```python
# решение задачи по файлу 17-316.txt
# Требования: найти тройки (строки по три подряд элемента) с хотя бы одной "хорошей парой",
# сумма тройки > max элемента последовательности, кратного 202.
# В ответе: количество таких троек и минимальная сумма среди них.
def is_good_pair(a, b):
# пара хорошая: оба чётные и сумма заканчивается на 44
return (a % 2 == 0) and (b % 2 == 0) and ((a + b) % 100 == 44)
def has_good_pair(triple):
a, b, c = triple
# проверяем все пары внутри тройки
return is_good_pair(a, b) or is_good_pair(a, c) or is_good_pair(b, c)
def main():
filename = "17-316.txt"
nums = []
with open(filename, "r") as f:
for token in f.read().split():
try:
x = int(token)
except ValueError:
continue
# оставляем только четырёхзначные натуральные числа
if 1000 <= x <= 9999:
nums.append(x)
n = len(nums)
if n < 3:
print(0, 0)
return
# максимальный элемент, кратный 202
multiples_of_202 = [x for x in nums if x % 202 == 0]
max_mult_202 = max(multiples_of_202) if multiples_of_202 else None
count = 0
min_sum = None
for i in range(n - 2):
t = nums[i], nums[i + 1], nums[i + 2]
s = t[0] + t[1] + t[2]
# ограничение по сумме
if max_mult_202 is not None:
cond_sum = s > max_mult_202
else:
cond_sum = True # если нет элементов, кратных 202, считаем условие выполненным
# проверка наличия хотя бы одной хорошей пары в тройке
if cond_sum and has_good_pair(t):
count += 1
if min_sum is None or s < min_sum:
min_sum = s
if min_sum is None:
min_sum = 0
print(count, min_sum)
if __name__ == "__main__":
main()
```
Как использовать:
- поместите файл 17-316.txt в ту же директорию, где находится скрипт, запустите Python-скрипт.
- программа выведет два числа: количество подходящих троек и минимальную сумму среди них. Если подходящих троек нет, будет выведено “0 0”.