Задание выполняется с использованием прилагаемых файлов.
В файле содержится последовательность целых чисел.
Её элементы по модулю не превышают 100 000 включительно.
Определите количество троек элементов последовательности, в которых ровно два элемента из трёх оканчиваются на 9 и являются четырёхзначными числами, а сумма всех элементов тройки меньше максимального элемента последовательности, оканчивающегося на 9 и являющегося четырёхзначным числом.
В ответе запишите количество найденных троек, затем максимальную из сумм элементов таких троек.
В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
Решение
🔹 Шаг 1. Считываем числа из файла
f = open("17.txt")
nums = [int(x) for x in f]
# 1. максимальный четырёхзначный элемент, оканчивающийся на 9
max_9 = max(
x for x in nums
if 1000 <= abs(x) <= 9999 and abs(x) % 10 == 9
)
count = 0
max_sum = -10**9
# 2. проверка троек соседних элементов
for i in range(len(nums) - 2):
a, b, c = nums[i], nums[i + 1], nums[i + 2]
k = sum(
1000 <= abs(x) <= 9999 and abs(x) % 10 == 9
for x in (a, b, c)
)
if k == 2:
s = a + b + c
if s < max_9:
count += 1
if s > max_sum:
max_sum = s
# 3. вывод результата
print(count, max_sum)
📌 Что происходит:
Теперь
nums — это вся числовая последовательность.
🔹 Шаг 2. Шаг 2
max_9 = max(
x for x in nums
if 1000 <= abs(x) <= 9999 and abs(x) % 10 == 9
)
count = 0
max_sum = -10**9
for i in range(len(nums) - 2):
a, b, c = nums[i], nums[i + 1], nums[i + 2]
k = sum(
1000 <= abs(x) <= 9999 and abs(x) % 10 == 9
for x in (a, b, c)
)
if k == 2:
s = a + b + c
if s < max_9:
count += 1
if s > max_sum:
max_sum = s
print(count, max_sum)
📌 Что происходит: по условию вычисляем опорное значение по всей последовательности (минимум или максимум с нужным свойством).