ЕГЭ Информатика 2024: Задание 17 — алгоритм обработки числовых последовательностей

Задание повышенного уровня сложности, на выполнение которого отводится 14 минут. Оно проверяет умение составлять алгоритмы обработки числовых последовательностей и записывать их в виде простых программ. К заданию прилагается файл с числовой последовательностью.

Постановка задачи

Необходимо определить:

  1. Количество троек элементов последовательности, в которых ровно два элемента являются трехзначными числами, а сумма элементов тройки не больше максимального элемента последовательности, оканчивающегося на 13.
  2. Максимальную сумму элементов таких троек.

Под «тройкой» понимаются три последовательных элемента.

Решение задачи

Алгоритм решения задачи включает следующие шаги:

  1. Чтение данных из файла: Файл с числовой последовательностью открывается функцией open(). Каждая строка преобразуется в целое число и добавляется в список list_numbers.
list_numbers = []
with open('file_name.txt', 'r') as file:
    for line in file:
        list_numbers.append(int(line))
  1. Поиск троек и обработка: Цикл перебирает элементы списка, начиная с первого и заканчивая предпоследним (-2), обрабатывая тройки элементов с индексами i, i+1 и i+2.
  2. Проверка на трехзначность: Проверяется, сколько элементов в тройке являются трехзначными числами. Количество трехзначных чисел вычисляется суммированием булевых значений, полученных с помощью проверки принадлежности элемента диапазону range(100, 1000).
count_three_digit = (list_numbers[i] in range(100, 1000)) + \n                    (list_numbers[i+1] in range(100, 1000)) + \n                    (list_numbers[i+2] in range(100, 1000))

Если count_three_digit равно 2, выполняется дальнейшая обработка.

  1. Поиск максимального элемента, оканчивающегося на 13: Используется функция max() с генератором, отбирающим элементы, оканчивающиеся на 13 (x % 100 == 13).
max_13 = max(x for x in list_numbers if x % 100 == 13)
  1. Проверка суммы и сохранение результатов: Сумма элементов тройки вычисляется функцией sum(). Если сумма меньше или равна max_13, она добавляется в список sums_of_triples.
sums_of_triples = []
if count_three_digit == 2 and sum(list_numbers[i:i+3]) <= max_13:
    sums_of_triples.append(sum(list_numbers[i:i+3]))
  1. Вывод результатов: Выводится длина списка sums_of_triples (количество подходящих троек) и максимальное значение в этом списке (максимальная сумма).
print(len(sums_of_triples), max(sums_of_triples) if sums_of_triples else 0)

Обработка случая пустого списка sums_of_triples добавлена для предотвращения ошибки.

Представлен алгоритм решения задания №17 демоверсии ЕГЭ по информатике 2024 года. Код демонстрирует эффективный способ обработки числовой последовательности и поиска требуемых троек чисел. Использование функций open(), int(), range(), sum(), и max() повышает читаемость и эффективность кода.

Что будем искать? Например,программа