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

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

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

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

Задача 1#26150

В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –10000  до 10000  включительно. Определите и запишите в ответе сначала количество троек элементов последовательности, в которых хотя бы одно число делится на 3  , сумма элементов тройки чётна и средний (тот, что по середине в последовательности) элемент тройки больше среднего арифметического элементов тройки, а затем, через пробел, максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности. Например, для последовательности из пяти элементов: 13,74,9,− 14,− 121  Ответ: 2  96

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

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

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

f = open(’Задание_17__i0i6.txt’)
a = [int(x) for x in f]

# Счётчики количества подходящих троек и максимальной суммы
maxim = 0
ans = 0

# Перебираем все тройки подряд идущих чисел
for i in range(len(a) - 2):
    x, y, z = a[i], a[i+1], a[i+2]

    # Проверяем, что хотя бы одно число делится на 3
    flag1 = (x % 3 == 0) or (y % 3 == 0) or (z % 3 == 0)
    # Проверяем, что сумма тройки чётная
    flag2 = (x + y + z) % 2 == 0
    # Проверяем, что средний элемент больше среднего арифметического тройки
    flag3 = y > ((x + y + z) / 3)

    if flag1 and flag2 and flag3:
        ans += 1
        maxim = max(maxim, x + y + z)

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

Ответ: 1720 26752

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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