1. Мастер-класс: Решение задачи 26 ЕГЭ методами Excel, Python и их эффективной комбинацией
Мастер-класс: Решение задачи 26 ЕГЭ методами Excel, Python и их эффективной комбинацией
Задание 26 в ЕГЭ по информатике проверяет умение обрабатывать большие массивы данных. Обычно это задачи на сортировку, поиск оптимального выбора (жадные алгоритмы) или анализ последовательностей. Специфика экзамена такова, что у вас есть выбор: писать код или использовать готовые инструменты электронных таблиц.
Каждый из этих подходов имеет свои сильные стороны. Электронные таблицы дают наглядность, а язык программирования — скорость и гибкость. Высший пилотаж подготовки — это умение не просто владеть обоими инструментами, но и комбинировать их в рамках одной задачи.
Классическая задача: Системный администратор и архив
Начнем с разбора базового типа задач, который часто встречается в демонстрационных вариантах.
> Системный администратор раз в неделю создаёт архив пользовательских файлов. Объём диска, куда он помещает архив, может быть меньше, чем суммарный объём файлов. Известен объём каждого файла. > > По заданной информации об объёме файлов и свободном объёме на диске определите максимальное число пользователей, чьи файлы можно сохранить. Затем определите максимальный размер файла, который может быть сохранён при условии, что сохранено максимально возможное число файлов. > > Входные данные: В первой строке находятся два числа: — размер свободного места (до 100 000) и — количество пользователей (до 10 000). В следующих строках — объёмы файлов.
Эта задача решается с помощью жадного алгоритма — стратегии, при которой на каждом шаге делается локально оптимальный выбор. Чтобы взять максимум файлов, нужно брать самые маленькие из них.
Решение с помощью Excel
Электронные таблицы идеально подходят для этой задачи благодаря визуализации каждого шага.
D1 и E1. Оставляем в столбце A только размеры файлов.A и применяем сортировку по возрастанию. Теперь самые маленькие файлы находятся наверху.B будем считать, сколько места занято на текущий момент. B1 пишем =A1.
- В ячейку B2 пишем =B1+A2 и растягиваем формулу вниз.
B вниз, пока значение не превысит размер диска . Допустим, . Мы видим, что в строке 568 накопительная сумма равна 8190, а в строке 569 — 8220. Значит, мы можем взять ровно 568 файлов. Первое число для ответа найдено.A (ниже 568-й строки) ищем максимально большое число, которое меньше или равно 35. Допустим, находим число 34. Это и есть второй ответ.Решение с помощью Python
Тот же алгоритм можно реализовать программно. Это исключает ошибки ручной прокрутки и поиска.
Код работает за время из-за сортировки, что для выполняется за доли секунды.
Задача на координаты: Места в концертном зале
Рассмотрим другой популярный тип задач, где данные представляют собой пары чисел.
> Организация выкупила места в концертном зале. Известно, какие места уже заняты. Найдите ряд с наибольшим номером, в котором есть два соседних свободных места, таких что слева и справа от них в том же ряду места уже заняты (схема: занято - свободно - свободно - занято). > > Входные данные: — количество занятых мест. Далее строк с парами чисел: номер ряда и номер места. > > В ответе укажите номер ряда и наименьший номер из найденной пары свободных мест.
Решение в Excel (Многоуровневая сортировка)
A (Ряд) и B (Место).A (по возрастанию), затем по столбцу B (по возрастанию). Это сгруппирует данные по рядам, а внутри ряда выстроит места по порядку.C2 пишем: =ЕСЛИ(И(A2=A3; B3-B2=3); 1; 0). A2=A3 проверяет, что мы находимся в одном ряду.
- B3-B2=3 проверяет, что между занятыми местами ровно два свободных.
C, оставляем только единицы. A (это ряд). Для этого ряда смотрим значение в столбце B и прибавляем 1 (чтобы получить номер первого свободного места).Решение на Python
Гибридный подход: Excel + Python
Самая важная часть подготовки — понимание того, что инструменты можно и нужно объединять. Гибридный подход — это использование Python для сложной логики или предобработки, а Excel — для визуализации, отладки и быстрого поиска ответов.
!Схема гибридного подхода к решению задачи 26
Сценарий 1: Python как фильтр, Excel как анализатор
Иногда условия задачи настолько запутанны, что написать одну формулу в Excel невозможно, а писать полный алгоритм поиска ответа на Python — долго и есть риск ошибиться в мелочах.
В этом случае на Python пишется короткий скрипт, который просто отсеивает мусор и выводит подозрительные данные, а финальный анализ проводится глазами в таблице.
Например, в задаче про концертный зал мы можем вывести все подходящие пары в консоль, скопировать их и вставить в Excel:
Скопировав этот вывод в Excel, мы можем в два клика отсортировать таблицу по убыванию рядов и сразу увидеть ответ. Символ \t (табуляция) гарантирует, что при вставке в Excel числа разобьются по разным столбцам.
Сценарий 2: Excel для понимания, Python для решения
К каждой задаче 26 прилагается два файла: тестовый (маленький, на 10-20 строк) и основной (на десятки тысяч строк).
Лучшая стратегия на экзамене:
Сценарий 3: Использование библиотеки pandas
Если вы уверенно владеете Python, библиотека pandas стирает границу между кодом и таблицами. Она позволяет применять табличные операции (группировки, фильтры) прямо в коде.
Решение задачи про концертный зал через pandas:
Сравнение подходов
| Критерий | Только Excel | Только Python | Гибридный подход |
| :--- | :--- | :--- | :--- |
| Скорость разработки | Высокая для простых задач. | Средняя (нужно писать и отлаживать код). | Максимальная (используем лучшее из двух миров). |
| Удобство отладки | Идеальное. Все данные и промежуточные вычисления перед глазами. | Низкое. Приходится использовать print() и гадать, где ошибка. | Высокое. Код генерирует данные, Excel их визуализирует. |
| Масштабируемость | Ограничена. При Excel начинает тормозить, формулы пересчитываются долго. | Отличная. Код обрабатывает миллионы строк за секунды. | Отличная. Тяжелую работу делает код, легкую аналитику — таблица. |
| Требования к знаниям | Знание функций, фильтров, абсолютных ссылок. | Уверенное владение синтаксисом, понимание индексов и алгоритмов. | Понимание форматов передачи данных (CSV, табуляция). |
Практические советы для экзамена
int(). Сравнение строк '100' и '20' даст неверный результат, так как лексикографически '20' больше.for i in range(len(data)) обращение к data[i+1] вызовет ошибку IndexError на последнем шаге. Цикл должен идти до len(data) - 1.Умение жонглировать инструментами — это признак зрелого ИТ-специалиста. Начиная с простых сортировок в таблицах и заканчивая скриптами, вы выстраиваете надежную систему, которая не даст сбой в стрессовой ситуации экзамена.