Тема 17. Обработка числовой последовательности

17.01 Обработка пар элементов последовательности

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка числовой последовательности
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#57108

В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от -10000 до 10000 включительно. Определите количество пар последовательности, в которых оба числа отрицательны, а произведение чисел пары больше количества чисел в последовательности, делящихся на 2. В ответе запишите через пробел количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

Вложения к задаче
Показать ответ и решение

Решение программой

Напишем программу, которая сначала подсчитывает количество чётных чисел во всей последовательности — это число понадобится для проверки условия. Далее перебираем все пары соседних чисел и проверяем, что оба числа отрицательны. Если это так, проверяем, что произведение этих двух отрицательных чисел больше количества чётных чисел в последовательности. Если пара удовлетворяет обоим условиям, увеличиваем счётчик таких пар и сравниваем сумму элементов пары с текущим максимальным значением суммы, обновляя его при необходимости. В конце выводим количество найденных пар и максимальную сумму среди них.

# Открываем файл и считываем всю последовательность чисел в список
file = open("17.txt")
arr = [int(_) for _ in file]

# Подсчитываем количество чисел, делящихся на 2 (чётных чисел) в последовательности
counter_even = len([j for j in arr if j % 2 == 0])

max_summ = -10**10  # Инициализируем максимальную сумму очень маленьким числом
ans_count = 0       # Счётчик подходящих пар

# Перебираем все пары соседних элементов последовательности
for i in range(len(arr) - 1):
    # Проверяем, что оба числа отрицательны
    if arr[i] < 0 and arr[i + 1] < 0:
        # Проверяем, что произведение пары больше количества чётных чисел в последовательности
        if arr[i] * arr[i + 1] > counter_even:
            ans_count += 1                         # Увеличиваем счётчик подходящих пар
            max_summ = max(max_summ, arr[i] + arr[i + 1])  # Обновляем максимальную сумму

# Выводим количество подходящих пар и максимальную сумму среди них
print(ans_count, max_summ)

Ответ: 1248 -522

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!