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

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

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

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

Задача 1#72513

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

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

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

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

# открываем файл с числами
f = open("17_4.txt")

# считываем все строки из файла и преобразуем в список целых чисел
a = [int(i) for i in f]

# находим максимальный элемент последовательности, оканчивающийся на 10 (по модулю)
mx10 = max([i for i in a if abs(i) % 100 == 10])

# создаём пустой список для хранения сумм подходящих троек
ans = []

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

    # отбираем только двузначные числа (по модулю от 10 до 99)
    check = [i for i in temp if 10 <= abs(i) <= 99]

    # если в тройке ровно два двузначных числа и сумма больше mx10
    if len(check) == 2 and sum(temp) > mx10:
        # добавляем сумму тройки в список подходящих
        ans += [sum(temp)]

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

Ответ: 33 8569

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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