Задание повышенного уровня сложности, на выполнение которого отводится 14 минут. Оно проверяет умение составлять алгоритмы обработки числовых последовательностей и записывать их в виде простых программ. К заданию прилагается файл с числовой последовательностью.
Постановка задачи
Необходимо определить:
- Количество троек элементов последовательности, в которых ровно два элемента являются трехзначными числами, а сумма элементов тройки не больше максимального элемента последовательности, оканчивающегося на 13.
- Максимальную сумму элементов таких троек.
Под «тройкой» понимаются три последовательных элемента.
Решение задачи
Алгоритм решения задачи включает следующие шаги:
- Чтение данных из файла: Файл с числовой последовательностью открывается функцией open(). Каждая строка преобразуется в целое число и добавляется в список list_numbers.
list_numbers = []
with open('file_name.txt', 'r') as file:
for line in file:
list_numbers.append(int(line))
- Поиск троек и обработка: Цикл перебирает элементы списка, начиная с первого и заканчивая предпоследним (-2), обрабатывая тройки элементов с индексами i, i+1 и i+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, выполняется дальнейшая обработка.
- Поиск максимального элемента, оканчивающегося на 13: Используется функция max() с генератором, отбирающим элементы, оканчивающиеся на 13 (x % 100 == 13).
max_13 = max(x for x in list_numbers if x % 100 == 13)
- Проверка суммы и сохранение результатов: Сумма элементов тройки вычисляется функцией 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]))
- Вывод результатов: Выводится длина списка 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() повышает читаемость и эффективность кода.