17.02 Обработка троек элементов последовательности
Ошибка.
Попробуйте повторить позже
В файле содержится последовательность целых чисел. Элементы ряда могут принимать целые значения в диапазоне [-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))
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

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

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

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

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

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!