В файле содержится последовательность целых чисел.
Её элементы по модулю не превышают 100000 включительно.
Найдите число троек подряд идущих элементов, в которых хотя бы два элемента оканчиваются на 42 и являются четырёхзначными числами.
При этом сумма всех элементов тройки должна быть больше максимального элемента последовательности, который оканчивается на 42 и является четырёхзначным числом.
В ответе запишите количество найденных троек, затем максимальную из сумм элементов таких троек.
Под тройками в задаче подразумеваются три идущих подряд элемента последовательности.
Решение
🔹 Шаг 1. Считываем числа из файла
f = open('17.txt')
a = [int(x) for x in f]
def ok(n):
return 1000 <= abs(n) <= 9999 and abs(n) % 100 == 42
m = max(x for x in a if ok(x))
k = 0
mx = 0
for i in range(len(a) - 2):
x, y, z = a[i], a[i + 1], a[i + 2]
s = x + y + z
if ok(x) + ok(y) + ok(z) >= 2 and s > m:
k += 1
mx = max(mx, s)
print(k, mx)
📌 Результат: выполняем шаг алгоритма по условию задачи.
🔹 Шаг 2. Проверка: четырёхзначное число с нужным окончанием
def ok(n):
return 1000 <= abs(n) <= 9999 and abs(n) % 100 == 42
📌 Что происходит: вспомогательная функция для проверки условия из текста задачи (удобнее вызывать её в цикле по парам).
🔹 Шаг 3. Находим максимальный четырёхзначный элемент по условию
m = max(x for x in a if ok(x))
📌 Что происходит: по условию вычисляем опорное значение по всей последовательности (минимум или максимум с нужным свойством).
🔹 Шаг 4. Подготавливаем переменные для подсчёта
k = 0
mx = 0
📌 Результат: выполняем шаг алгоритма по условию задачи.
🔹 Шаг 5. Проверяем тройки соседних элементов
for i in range(len(a) - 2):
x, y, z = a[i], a[i + 1], a[i + 2]
s = x + y + z
if ok(x) + ok(y) + ok(z) >= 2 and s > m:
k += 1
mx = max(mx, s)
📌 Что происходит: по условию вычисляем опорное значение по всей последовательности (минимум или максимум с нужным свойством).
🔹 Шаг 6. Выводим ответ
print(k, mx)
📌 Что выводим: сначала количество найденных пар (или троек), затем второе число из ответа по условию (для этого варианта: 11 86252).