ЕГЭ по информатике: Задание 26. Эффективное решение с помощью комбинации Excel и Python

Подробное руководство для 11-классников по решению 26 задания ЕГЭ с использованием электронных таблиц и программирования. Материал учит применять Excel и Python как по отдельности, так и в мощной комбинации для максимальной скорости и точности на экзамене. Включает разбор типичных задач, сравнение подходов, анализ ошибок и практические советы.

1. Мастер-класс: Решение задачи 26 ЕГЭ методами Excel, Python и их эффективной комбинацией

Мастер-класс: Решение задачи 26 ЕГЭ методами Excel, Python и их эффективной комбинацией

Задание 26 в ЕГЭ по информатике проверяет умение обрабатывать большие массивы данных. Обычно это задачи на сортировку, поиск оптимального выбора (жадные алгоритмы) или анализ последовательностей. Специфика экзамена такова, что у вас есть выбор: писать код или использовать готовые инструменты электронных таблиц.

Каждый из этих подходов имеет свои сильные стороны. Электронные таблицы дают наглядность, а язык программирования — скорость и гибкость. Высший пилотаж подготовки — это умение не просто владеть обоими инструментами, но и комбинировать их в рамках одной задачи.

Классическая задача: Системный администратор и архив

Начнем с разбора базового типа задач, который часто встречается в демонстрационных вариантах.

> Системный администратор раз в неделю создаёт архив пользовательских файлов. Объём диска, куда он помещает архив, может быть меньше, чем суммарный объём файлов. Известен объём каждого файла. > > По заданной информации об объёме файлов и свободном объёме на диске определите максимальное число пользователей, чьи файлы можно сохранить. Затем определите максимальный размер файла, который может быть сохранён при условии, что сохранено максимально возможное число файлов. > > Входные данные: В первой строке находятся два числа: — размер свободного места (до 100 000) и — количество пользователей (до 10 000). В следующих строках — объёмы файлов.

Эта задача решается с помощью жадного алгоритма — стратегии, при которой на каждом шаге делается локально оптимальный выбор. Чтобы взять максимум файлов, нужно брать самые маленькие из них.

Решение с помощью Excel

Электронные таблицы идеально подходят для этой задачи благодаря визуализации каждого шага.

  • Импорт данных: Открываем текстовый файл в Excel. Первую строку (где указаны и ) вырезаем и вставляем в отдельное место, например, в ячейки D1 и E1. Оставляем в столбце A только размеры файлов.
  • Сортировка: Выделяем столбец A и применяем сортировку по возрастанию. Теперь самые маленькие файлы находятся наверху.
  • Накопительная сумма: В столбце B будем считать, сколько места занято на текущий момент.
  • - В ячейку B1 пишем =A1. - В ячейку B2 пишем =B1+A2 и растягиваем формулу вниз.
  • Поиск предела: Прокручиваем столбец B вниз, пока значение не превысит размер диска . Допустим, . Мы видим, что в строке 568 накопительная сумма равна 8190, а в строке 569 — 8220. Значит, мы можем взять ровно 568 файлов. Первое число для ответа найдено.
  • Максимизация последнего файла: Мы взяли 568 файлов, их объем 8190. У нас остался резерв: . Последний взятый файл (в строке 568) имел размер, например, 25. Если мы выкинем его из архива, у нас освободится единиц места.
  • Поиск замены: Теперь в столбце A (ниже 568-й строки) ищем максимально большое число, которое меньше или равно 35. Допустим, находим число 34. Это и есть второй ответ.
  • Решение с помощью Python

    Тот же алгоритм можно реализовать программно. Это исключает ошибки ручной прокрутки и поиска.

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

    Задача на координаты: Места в концертном зале

    Рассмотрим другой популярный тип задач, где данные представляют собой пары чисел.

    > Организация выкупила места в концертном зале. Известно, какие места уже заняты. Найдите ряд с наибольшим номером, в котором есть два соседних свободных места, таких что слева и справа от них в том же ряду места уже заняты (схема: занято - свободно - свободно - занято). > > Входные данные: — количество занятых мест. Далее строк с парами чисел: номер ряда и номер места. > > В ответе укажите номер ряда и наименьший номер из найденной пары свободных мест.

    Решение в Excel (Многоуровневая сортировка)

  • Вставляем данные в столбцы A (Ряд) и B (Место).
  • Применяем многоуровневую сортировку: сначала по столбцу A (по возрастанию), затем по столбцу B (по возрастанию). Это сгруппирует данные по рядам, а внутри ряда выстроит места по порядку.
  • Пишем формулу для поиска нужного паттерна. Нам нужно найти ситуацию, когда два занятых места в одном ряду находятся на расстоянии ровно 3 позиций друг от друга (например, заняты 10 и 13, значит 11 и 12 свободны).
  • В ячейке 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 строк) и основной (на десятки тысяч строк).

    Лучшая стратегия на экзамене:

  • Открыть тестовый файл в Excel.
  • Руками, используя заливку ячеек цветом, проиграть алгоритм. Понять, почему в примере получился именно такой ответ.
  • Написать код на Python.
  • Запустить код на тестовом файле. Если ответ совпал с ручным разбором в Excel — алгоритм верен.
  • Запустить код на основном файле.
  • Сценарий 3: Использование библиотеки pandas

    Если вы уверенно владеете Python, библиотека pandas стирает границу между кодом и таблицами. Она позволяет применять табличные операции (группировки, фильтры) прямо в коде.

    Решение задачи про концертный зал через pandas:

    Сравнение подходов

    | Критерий | Только Excel | Только Python | Гибридный подход | | :--- | :--- | :--- | :--- | | Скорость разработки | Высокая для простых задач. | Средняя (нужно писать и отлаживать код). | Максимальная (используем лучшее из двух миров). | | Удобство отладки | Идеальное. Все данные и промежуточные вычисления перед глазами. | Низкое. Приходится использовать print() и гадать, где ошибка. | Высокое. Код генерирует данные, Excel их визуализирует. | | Масштабируемость | Ограничена. При Excel начинает тормозить, формулы пересчитываются долго. | Отличная. Код обрабатывает миллионы строк за секунды. | Отличная. Тяжелую работу делает код, легкую аналитику — таблица. | | Требования к знаниям | Знание функций, фильтров, абсолютных ссылок. | Уверенное владение синтаксисом, понимание индексов и алгоритмов. | Понимание форматов передачи данных (CSV, табуляция). |

    Практические советы для экзамена

  • Следите за типами данных. При чтении из файла в Python все данные по умолчанию являются строками. Не забывайте применять int(). Сравнение строк '100' и '20' даст неверный результат, так как лексикографически '20' больше.
  • Остерегайтесь ошибки «на единицу» (Off-by-one error). В задаче с местами разница между занятыми 10 и 13 равна 3 (), но свободных мест между ними ровно два (11 и 12). Всегда рисуйте схему на черновике.
  • Проверяйте границы массивов. При итерации for i in range(len(data)) обращение к data[i+1] вызовет ошибку IndexError на последнем шаге. Цикл должен идти до len(data) - 1.
  • Не доверяйте одному методу. Если у вас осталось время на экзамене, решите задачу 26 вторым способом. Если ответы, полученные в Excel и в Python, совпали — вы гарантированно получаете свои баллы.
  • Умение жонглировать инструментами — это признак зрелого ИТ-специалиста. Начиная с простых сортировок в таблицах и заканчивая скриптами, вы выстраиваете надежную систему, которая не даст сбой в стрессовой ситуации экзамена.