1. Журнал абитуриентам
  2. Подготовка к ЕГЭ
Подготовка к ЕГЭ

Задания ЕГЭ по информатике: разбор с педагогом

20.12.2024 1531

Самые сложные задания на ЕГЭ по информатике и их разбор.

Единый государственный экзамен (ЕГЭ) по информатике – это важный этап в образовательной системе, который позволяет оценить уровень знаний и практических умений учащихся в области информационных технологий. В 2025 году изменения в структуре контрольных измерительных материалов (КИМ) не предусматриваются, однако одно из заданий претерпело значительные преобразования, что несомненно повлияет на процесс подготовки студентов и методику преподавания информатики в школах.

Какие типы заданий есть на ЕГЭ по информатике

Всего в работу входит 27 заданий, охватывающих следующие разделы: 

  • информация и её кодирование; 
  • моделирование и компьютерный эксперимент; 
  • системы счисления; 
  • логика и алгоритмы; 
  • элементы теории алгоритмов; 
  • программирование; 
  • обработка числовой информации; 
  • технологии поиска и хранения информации.

Задания: 

  1. Анализ информационных моделей
  2. Построение таблиц истинности логических выражений
  3. Поиск информации в реляционных базах данных
  4. Кодирование и декодирование информации
  5. Анализ и построение алгоритмов для исполнителей
  6. Определение результатов работы простейших алгоритмов
  7. Кодирование и декодирование информации. Передача информации
  8. Перебор слов и системы счисления
  9. Работа с таблицами
  10. Поиск символов в текстовом редакторе
  11. Вычисление количества информации
  12. Выполнение алгоритмов для исполнителей
  13. Организация компьютерных сетей. Адресация
  14. Кодирование чисел. Системы счисления
  15. Преобразование логических выражений
  16. Рекурсивные алгоритмы
  17. Обработки числовой последовательности
  18. Робот-сборщик монет
  19. Выигрышная стратегия. Задание 1
  20. Выигрышная стратегия. Задание 2
  21. Выигрышная стратегия. Задание 3
  22. Многопроцессорные системы
  23. Оператор присваивания и ветвления. Перебор вариантов, построение дерева
  24. Обработка символьных строк
  25. Обработка целочисленной информации
  26. Обработка целочисленной информации
  27. Программирование

Изменения ЕГЭ по информатике в 2025

В 2025 году структура КИМ останется неизменной. Это означает, что школьники будут знакомы с форматом экзамена, что в свою очередь облегчает подготовку и позволяет сосредоточиться на углублении знаний. Поскольку учащиеся уже имеют понимание структуры КИМ с прошлого года, они смогут более эффективно распределять время на изучение материала и практические задания. Рассмотрим изменения, которые коснутся 2025 года.

Задание 16 (рекурсия). Первое изменение коснулось именно этого вопроса. Раньше задание было составлено таким образом, что часто ответ можно быть посчитать вручную. Теперь же выпускникам придётся писать программу, чтобы получить правильный ответ.

Задача из демо-версии ЕГЭ 2025 г.:

Задания 19, 20, 21. Это целый подраздел заданий, который называется «теория игр». С этого года вопросы требуют работать с заданием на уменьшение камней в кучах, а не только на их увеличение.

Напомним, что в структуре экзамена, как и за последние 2 года, входит 27 заданий, охватывавших следующие содержательные разделы курса информатики: 

  • информация и её кодирование; 
  • моделирование и компьютерный эксперимент; 
  • системы счисления; 
  • логика и алгоритмы; 
  • элементы теории алгоритмов; 
  • программирование; 
  • обработка числовой информации; 
  • технологии поиска и хранения информации.

Несмотря на отсутствие изменений в структуре, нововведения в задании 27 требуют особого внимания.

Разберем более детально 16 задание

Функция – это подпрограмма, результатом работы которой может являться определенное значение. 

В программировании рекурсией называется процесс, когда функция вызывает сама себя или, когда две функции попарно вызывают друг друга.

Программа:

from functools import lru_cache


@lru_cache(None)
def F(n):
    if n==1: return 1
    if n>1: return (n-1)*F(n-1)


for i in range(1, 2024):
    F(i)


print((F(2024) + 2*F(2023))/F(2022))

Ответ: 4094550

Функции кэширования lru_cache, cache, cached_property. Они вам могут пригодиться в тех случаях, когда ваша функция постоянно вычисляет одни и те же значения. Поэтому чтобы избежать повторных вычислений, вы можете добавить результаты вызова функций в кэше в памяти ПК.

Новая специфика задания 27

Одним из самых значительных изменений ЕГЭ станет задание 27, которое будет проверять умение выполнять последовательность решения задач анализа данных. В настоящее время анализ данных занимает важное место в информатике и имеет множество практических применений в различных сферах, от бизнеса до науки. 

Напоминаем, что максимально за задание дадут 2 балла. Оно относится к высокому уровню сложности.

Учащимся предлагается не просто выполнить алгоритм, а осмыслить этапы работы с данными, что включает в себя:

  • Сбор первичных данных. В контексте нашего задания это означает получение координат звёзд из файлов А и Б. Учащиеся должны уметь находить и извлекать данные о положении звёзд, которые будут использоваться для кластеризации. 
  • Очистка и оценка качества данных. Этот этап включает в себя проверку собранных данных на наличие ошибок или недочётов. Например, если есть некорректные координаты или дублирующиеся записи, ученики должны уметь идентифицировать и устранить такие проблемы перед проведением дальнейшего анализа. 
  • Выбор и построение модели. В нашем задании это подразумевает выбор алгоритма кластеризации, который будет использоваться для группировки звёзд, опираясь на их координаты. Школьники должны выбрать подходящий метод и уметь его реализовать, чтобы получить кластеры звёзд по заданным критериям. 
  • Преобразование данных. На этом этапе учащиеся могут преобразовывать данные в нужный формат для последующей работы. Например, они могут конвертировать координаты звёзд в массивы для удобства обработки или для вычисления центроидов кластеров. 
  • Визуализация данных. Этап визуализации позволит учащимся создать графики или схемы, показывающие распределение звёзд и их кластеры. Это помогает лучше понимать полученные результаты и делиться ими с другими. 
  • Интерпретация результатов. Наконец, учащиеся должны уметь анализировать полученные результаты. Например, они должны объяснить, что означают координаты центров кластеров, как они были вычислены и что эти данные могут сказать о распределении звёзд в заданных кластерах.

Значение изменений

Переход к практическому анализу данных требует от учащихся более глубокого понимания не только теории, но и применение полученных знаний на практике. Такое изменение в задании 27 не только способствует развитию аналитического мышления, но и подготавливает школьников к реальным вызовам на рынке труда, где навыки работы с данными становятся все более востребованными. Выпускники, обладающие навыками работы с данными и анализом, смогут более успешно интегрироваться в профессиональную среду и применять полученные знания в различных областях.

Что нужно уметь делать, чтобы справиться с 27 заданием:

  • Знать основы языков программирования;
  • Строить алгоритмы различной структуры;
  • Внимательно читать задание. Чаще всего нужно работать со случайным набором целых чисел;
  • Последовательно считывать данные из файла.

Решим задачу:

Учёный решил провести кластеризацию некоторого множества звёзд по их расположению на карте звёздного неба. Кластер звёзд – это набор звёзд (точек) на графике, лежащий внутри прямоугольника высотой H и шириной W. Каждая звезда обязательно принадлежит только одному из кластеров.

Истинный центр кластера, или центроид, – это одна из звёзд на графике, сумма расстояний от которой до всех остальных звёзд кластера минимальна. Под расстоянием понимается расстояние Евклида между двумя точками A(x1, y1) и B(x2, y2) на плоскости, которое вычисляется по формуле:

В файле A хранятся данные о звёздах двух кластеров, где H=3, W=3 для каждого кластера. В каждой строке записана информация о расположении на карте одной звезды: сначала координата x, затем координата y. Значения даны в условных единицах. Известно, что количество звёзд не превышает 1000.

В файле Б хранятся данные о звёздах трёх кластеров, где H=3, W=3 для каждого кластера. Известно, что количество звёзд не превышает 10 000. Структура хранения информации о звездах в файле Б аналогична файлу А.

Для каждого файла определите координаты центра каждого кластера, затем вычислите два числа: Px – среднее арифметическое абсцисс центров кластеров, и Py – среднее арифметическое ординат центров кластеров.

В ответе запишите четыре числа: в первой строке сначала целую часть произведения Px × 10 000, затем целую часть произведения Py × 10 000 для файла А, во второй строке – аналогичные данные для файла Б.

Возможные данные одного из файлов иллюстрированы графиком.

Внимание! График приведён в иллюстративных целях для произвольных значений, не имеющих отношения к заданию. Для выполнения задания используйте данные из прилагаемого файла.

Разбор задания:

Данные предоставлены в виде 1) текстового файла и в виде 2) Excel-файла.

В начале откроем Excel для файла A.

Выделим столбцы A и B. Выберем вставка -> диаграмма -> точечная. Получим такую картину:

Наблюдаем два кластера точек.

Используем поиск перебором, чтобы найти координаты центра каждого кластера.

Приведём решение на языке Python.

Разбор кода: Этот код сначала открывает файл 'demo_2025_27_А.txt', а затем проходит через оставшиеся строки файла, преобразуя строки в списки чисел float и добавляя их в соответствующие списки a1 и a2 в зависимости от значения координаты x.

Затем он проходит по каждому элементу списка a1 и вычисляет сумму расстояний от этой звезды до всех других звезд в этом же кластере. Затем он сравнивает эту сумму с текущим минимальным суммарным расстоянием (sm1) и, если она меньше, обновляет x1 и y1 координаты центра кластера и значение sm1.

Аналогично для a2.

Наконец, находится среднее арифметическое координат x и y центров кластеров, и выводит полученные значения, умноженные на 10000.

В Python тип данных float представляет вещественные числа (числа с плавающей запятой). В данном случае, после чтения строк из файла, мы используем функцию float() для преобразования строковых значений координат x и y в числа с плавающей точкой, чтобы выполнить математические операции с этими значениями (например, вычисление расстояний между звездами).

range - это встроенная функция, которая создает последовательность чисел в указанном диапазоне. Обычно используется в циклах для итераций по последовательности.

s.replace()  - это метод строки, который заменяет все вхождения одной строки на другую строку в данной строке. В данном случае, код использует s.replace(',', '.'), чтобы заменить запятые на точки в каждой строке.

f=open('demo_2025_27_А.txt')
f.readline()
a1=[]
a2=[]
for s in f.readlines():
    s = s.replace(',', '.').split()
    x, y = float(s[0]), float(s[1])
    if x < 1:
        a1.append((x, y))
    else:
        a2.append((x, y))


sm1 = sm2 = 10**10
x1=y1=x2=y2=0
for i in range(len(a1)):
    d_sm = 0
    for j in range(len(a1)):
        d_sm += ((a1[j][0] - a1[i][0])**2 + (a1[j][1] - a1[i][1])**2) ** 0.5


    if d_sm < sm1:

        x1 = a1[i][0]
        y1 = a1[i][1]
        sm1 = d_sm


for i in range(len(a2)):
    d_sm = 0
    for j in range(len(a2)):
        d_sm += ((a2[j][0] - a2[i][0])**2 + (a2[j][1] - a2[i][1])**2) ** 0.5


    if d_sm < sm2:
        x2 = a2[i][0]
        y2 = a2[i][1]
        sm2 = d_sm


Px = (x1+x2)/2
Py = (y1+y2)/2


print(int(Px*10000), int(Py*10000))

Здесь завели два списка: a1 и a2. В первый список будем класть точки из первого кластера, во второй список из второго кластера.

Визуально видно в диаграмме Excel, что точки из первого кластера по оси X меньше единицы, а из второго больше.

Перебором пробуем для каждой точки из кластера найти сумму расстояний до всех точек этого кластера. Где получается минимальная длина, запоминаем координаты x и y этой точки.

Задача для файла B решается аналогично.

f=open('demo_2025_27_А.txt')
f.readline()
a1=[]
a2=[]
a3=[]
for s in f.readlines():
    s = s.replace(',', '.').split()
    x, y = float(s[0]), float(s[1])
    if x < 3 and y < 4:
        a1.append((x, y))
    else:
        if x6:
            a2.append((x, y))
    else:
            a3.append((x, y))


sm1 = sm2 = sm3 = 10**10
x1=y1=x2=y2=x3=y3=0
for i in range(len(a1)):
    d_sm = 0
    for j in range(len(a1)):
        d_sm += ((a1[j][0] - a1[i][0])**2 + (a1[j][1] - a1[i][1])**2) ** 0.5


    if d_sm < sm1:
        x1 = a1[i][0]
        y1 = a1[i][1]
        sm1 = d_sm


for i in range(len(a2)):
    d_sm = 0
    for j in range(len(a2)):
        d_sm += ((a2[j][0] - a2[i][0])**2 + (a2[j][1] - a2[i][1])**2) ** 0.5


    if d_sm < sm2:
        x2 = a2[i][0]
        y2 = a2[i][1]
        sm2 = d_sm


for i in range(len(a3)):
    d_sm = 0
    for j in range(len(a3)):
        d_sm += ((a3[j][0] - a3[i][0])**2 + (a3[j][1] - a3[i][1])**2) ** 0.5


    if d_sm < sm3:
        x3 = a3[i][0]
        y3 = a3[i][1]
        sm3 = d_sm


Px = (x1+x2+x3)/3
Py = (y1+y2+y3)/3


print(int(Px*10000), int(Py*10000))

Ответ:

10738 30730
37522 51277

Важно! Убедитесь, что вы понимаете основные алгоритмы (например, сортировка, поиск, работа с массивами, строками) и структуры данных (списки, стеки, очереди, деревья). Это поможет вам более эффективно решать задачи.

С чего начинать решение варианта ЕГЭ по информатике

Для прохождения испытаний выпускникам откроют доступ к редактору электронных таблиц, средам для программирования, а также к текстовому редактору.

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

Для набора от 80 баллов на ЕГЭ по информатике важно следовать стратегии. Вот несколько рекомендаций:

  1. Прочтите все задания на варианте, оцените их сложность и начните с самых простых.
  2. Сосредоточьтесь на задачах, в которых уверены и которые можете решить быстро.
  3. Постарайтесь решить каждую задачу методом исключения, если не находите ответ сразу.
  4. При решении задачи обращайте внимание на подсказки в условии, они могут вести к правильному ответу.
  5. Не тратьте время на задачи, которые слишком сложны для вас. Можно вернуться к ним в конце экзамена, если останется время.
  6. Проверьте свои ответы перед сдачей работы, исправьте ошибки и удостоверьтесь, что вы решили все задачи.
  7. Не зацикливайтесь на задаче, если не получается ее решить. Переходите к следующей и вернитесь к затруднительной позже.

Следуя этим рекомендациям в решении задач, вы повышаете свои шансы на успешный результат.

Разбор сложных заданий по информатике

Где именно выпускники теряют баллы на ЕГЭ по информатике, почему это происходит и как этого избежать.

Задание 6. Определение результатов работы простейших алгоритмов (4-5 мин)

Тема: Определение возможных результатов работы простейших алгоритмов управления исполнителями и вычислительных алгоритмов. 

Что проверяется: 

  • ручное выполнение программ для исполнителей; 
  • описание области, ограниченной ломаной линией, в виде набора условий;
  • основные конструкции языка программирования.;
  • система программирования;
  • умение читать и отлаживать программы на языке программирования.

Что нужно знать и уметь: 

  • выполнять ручную прокрутку программы для исполнителя, в которой используется цикл;
  • строить на координатной плоскости фигуру, которую нарисует Черепаха (при ее известном начальном положении).

Задача:

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует три команды: Вперёд n (где n — целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова, Направо m (где m — целое число), вызывающая изменение направления движения на m градусов по часовой стрелке, и Налево m (где m — целое число), вызывающая изменение направления движения на m градусов против часовой стрелки.

Запись Повтори k [Команда1 Команда2 . . . Команда S] означает, что последовательность из S команд повторится k раз.

Черепахе был дан для исполнения следующий алгоритм:

Повтори 2 [Вперёд 9 Направо 90 Вперёд 15 Направо 90]

Поднять хвост

Вперёд 12 Направо 90

Опустить хвост

Повтори 2 [Вперёд 6 Направо 90 Вперёд 12 Направо 90]

Определите, сколько точек с целочисленными координатами будут находиться внутри объединения фигур, ограниченных заданными алгоритмом линиями, не включая точки на границах этого объединения.

Источник: ЕГЭ по информатике 20.06.2023. Основная волна. Дальний Восток

Решение.

Приведём решение на языке «КуМир»

Выберите масштаб сетки равным 1, запустите программу для исполнителя Черепаха.

использовать Черепаха 

алг

нач

опустить хвост 

нц 2 раз

вперед (9)

вправо (90)

вперед (15)

вправо (90)

кц

поднять хвост

вперед (12)

вправо (90)

опустить хвост

нц 2 раз

вперед (6)

вправо (90)

вперед (12)

вправо (90)

кц

кон

 

После выполнения программы считаем количество точек с целочисленными координатами внутри объединения фигур, ограниченных заданными алгоритмом линиями, не включая точки на линиях.

Получаем 127.

Задание 9. Работа с таблицами (6-8 мин)

Тема: Встроенные функции в электронных таблицах 

Что проверяется: 

  • умение обрабатывать числовую информацию в электронных таблицах;
  • использование инструментов решения статистических и расчётно-графических задач;
  • умение представлять и анализировать табличную информацию в виде графиков и диаграмм. 

Что нужно знать: навык вычисления максимального, минимального и среднего арифметического значений.

Задача:

Откройте файл электронной таблицы, содержащей в каждой строке семь натуральных чисел. Приведём здесь пример части таблицы из файла:

Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия: 

— в строке есть два числа, каждое из которых повторяется дважды, остальные числа различны;

— среднее арифметическое всех повторяющихся чисел строки меньше среднего арифметического всех её чисел.

Источник: Демонстрационная версия ЕГЭ−2024 по информатике

Решение.

Для начала, найдём количество повторений каждого числа. Для этого в ячейку H1 впишем =СЧЁТЕСЛИ($A1:$G1;A1), протянем до ячейки N1 и потом вниз до конца таблицы. Теперь найдем количество строк, удовлетворяющих первому условию, для этого впишем =ЕСЛИ(И(МАКС(H1:N1)<3;СУММ(H1:N1)=11);1;0) в ячейку O1 и протянем вниз до конца таблицы.

Теперь выпишем отдельно повторяющиеся числа. В ячейку P1 впишем =ЕСЛИ(H1=2;A1;" ") и протянем до V1 и вниз до конца таблицы. 

Наконец, найдем искомую величину. В ячейку W1 впишем =ЕСЛИ(O1=1;ЕСЛИ(СРЗНАЧ(P1:V1)<СРЗНАЧ(A1:G1);1;0);0) и протянем вниз до конца таблицы. 

Теперь в ячейку X1 впишем =СУММ(AD:AD) и получим ответ  — 83.

Примечание. Если писать код, к примеру, на Python, то файл требуется сохранить в формате txt.

Задание 17. Обработки числовой последовательности (15-18 мин)

Тема: Перебор последовательности целых чисел. Проверка делимости. 

Что проверяется: 

  • умение создавать собственные программы (20–40 строк) для обработки целочисленной информации;
  • основные конструкции языка программирования, система программирования;
  • умение создавать программы на языке программирования по их описанию. 

Что нужно знать:

  • в известных задачах этого типа (не олимпиадных) нет ограничения на время выполнения, по крайней мере, оно несущественно для отрезков, заданных для перебора; поэтому можно использовать простой перебор без оптимизации; 
  • задачи этого типа предлагается решать с помощью электронных таблиц или собственной программы; как правило, написать правильную программу значительно проще.

Задача:

В файле содержится последовательность натуральных чисел, каждое из которых не превышает 100 000. Определите количество троек элементов последовательности, в которых ровно два из трёх элементов являются трёхзначными числами, а сумма элементов тройки не больше максимального элемента последовательности, оканчивающегося на 13. Гарантируется, что в последовательности есть хотя бы одно число, оканчивающееся на 13. В ответе запишите количество найденных троек чисел, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

Источник: Демонстрационная версия ЕГЭ−2024 по информатике

Приведём пример части чисел из файла:

6633 4838 33100 55 86 95340 9008 6786 99 81 4889 989 49498 8751 66…

Решение.

Приведём решение на языке Python.

f = open('17_2024.txt')

s = f.readlines()

for i in range(len(s)):

    s[i] = int(s[i])

count = 0

maxi = 0

maxsum = 0

for i in range(len(s)):

    if abs(s[i]) % 100 == 13:

        maxi = max(maxi, s[i])

for i in range(2, len(s)):

    k1 = 0

    k2 = 0

    k3 = 0

    c1 = abs(s[i-2])

    c2 = abs(s[i-1])

    c3 = abs(s[i])

    while c1 > 0:

        k1 += 1

        c1 //= 10

    while c2 > 0:

        k2 += 1

        c2 //= 10

    while c3 > 0:

        k3 += 1

        c3 //= 10

    if (k1 == 3 and k2 == 3 and k3 != 3) or (k1 == 3 and k2 != 3 and k3 == 3) or (k1 != 3 and k2 == 3 and k3 == 3):

        if s[i-2] + s[i-1] + s[i] <= maxi:

            count += 1

            maxsum = max(maxsum, s[i-2] + s[i-1] + s[i])

print(count, maxsum)

В результате работы данного алгоритма при вводе данных из файла ответ — 959 97471.

Ответ: 959 97471

Задание 18. Робот-сборщик монет (6-8 мин)

Тема: Динамическое программирование.

Что проверяется:

  • умение обрабатывать вещественные выражения в электронных таблицах;
  • использование инструментов решения статистических и расчётно-графических задач;
  • умение представлять и анализировать табличную информацию в виде графиков и диаграмм.

Что нужно знать:

  • в задачах, которые предлагаются в этом задании КИМ, нужно найти оптимальный путь для Робота, который перемещается на клетчатом поле (Робот может на каждом шаге выбирать одно из двух направлений движения, например, только вправо и вниз);
  • в каждой клетке Робот получает некоторую награду («берёт монету»), и нужно найти такой путь, при котором общая награда будет наибольшая (или наименьшая, если это не награда, а штраф);
  • теоретически можно решить такую задачу полным перебором вариантов: рассмотреть все возможные пути и выбрать лучший. (однако количество возможных путей для полей даже не очень большого размера слишком велико для того, чтобы решить эту задачу за время проведения ЕГЭ, даже если вам удастся безошибочно написать программу для такого перебора); 
  • эта задача быстро решается с помощью динамического программирования – метода оптимизации, предложенный американским математиком Ричардом Беллманом, который сформулировал очень простой принцип оптимальности пути: любая часть оптимального пути оптимальна.

Задача:

Квадрат разлинован на N × N клеток (1 < N < 30). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо и вниз. По команде вправо Робот перемещается в соседнюю правую клетку, по команде вниз - в соседнюю нижнюю. Квадрат ограничен внешними стенами. Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может. Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота. Определите максимальную и минимальную денежные суммы, которые может собрать Робот, пройдя из левой верхней клетки в правую нижнюю.

В ответе укажите два числа сначала максимальную сумму, затем минимальную. Исходные данные представляют собой электронную таблицу размером N × N, каждая ячейка которой соответствует клетке квадрата. Внутренние и внешние стены обозначены утолщенными линиями.

Пример входных данных:

 

Для данных из примера ответ: 34 22.

Источник: ЕГЭ по информатике 06.04.2023. Досрочная волна

Решение.

Сначала найдём максимальную денежную сумму. Для этого найдём максимальную денежную сумму для каждой ячейки таблицы. Для каждой ячейки верхней строки это будет сумма всех ячеек слева от текущей. Для каждой ячейки левого столбца это будет сумма всех ячеек сверху от текущей. В ячейку A22 запишем формулу =СУММ($A$1:A1). Скопируем эту формулу во все ячейки в диапазоне B22:T22 и в диапазоне A23:A41.

Для ячеек С30:С34, E25:E38, Q29:Q33 и S24:S38, поскольку слева от них имеется внутренняя стенка, максимальная денежная сумма вычисляется как сумма текущей ячейки и суммы сверху, в ячейку C30 запишем формулу =C29+C9 и скопируем её во все ячейки диапазона С30:С34. Аналогично поступаем для всех ячеек диапазонов E25:E38, Q29:Q33 и S24:S38.

Для ячеек F24:J24, I27:M27, K30:O30, K33:O33, I36:M36 и F40:J40, поскольку сверху от них имеется внутренняя стенка, максимальная денежная сумма вычисляется как сумма текущей ячейки и суммы слева, в ячейку F24 запишем формулу =E24+F3 и скопируем её во все ячейки диапазона F24:J24. Аналогично поступаем для всех ячеек диапазонов I27:M27, K30:O30, K33:O33, I36:M36 и F40:J40.

Для остальных ячеек будем сравнивать значение ячейки слева и значение ячейки сверху и присваивать текущей ячейке значение суммы той ячейки, в которой значение больше, и текущей ячейки. В B23 запишем формулу =МАКС(A23+B2;B22+B2) и скопируем эту формулу во все оставшиеся ячейки диапазона B23:T41. Таким образом, в ячейке T41 получим значение максимальной денежной суммы  — 1102.

Аналогичным образом найдём значение минимальной денежной суммы. В B23 запишем формулу =МИН(A23+B2;B22+B2) и скопируем эту формулу во все оставшиеся ячейки диапазона B23:T41. Таким образом, в ячейке T41 получим значение минимальной денежной суммы  — 1029.

Ответ: 1102 1029.

Задание 21. Выигрышная стратегия (11-12 мин)

Тема: Теория игр. Поиск выигрышной стратегии.

Что проверяется:

  • умение анализировать алгоритм логической игры;
  • умение найти выигрышную стратегию игры;
  • умение построить дерево игры по заданному алгоритму и найти выигрышную стратегию;
  • цепочки (конечные последовательности), деревья, списки, графы, матрицы (массивы), псевдослучайные последовательности;
  • умение строить информационные модели объектов, систем и процессов в виде алгоритмов.

Что нужно знать:

  • в простых играх можно найти выигрышную стратегию, просто перебрав все возможные варианты ходов соперников;
  • теория и навык построения «дерева игры».

Задача:

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один или три камня или увеличить количество камней в куче в два раза. Например, имея кучу из 15 камней, за один ход можно получить кучу из 16, 18 или 30 камней. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.

Игра завершается в тот момент, когда количество камней в куче становится не менее 48. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 48 или больше камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 47.

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

Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна.

Найдите минимальное значение S, при котором одновременно выполняются два условия:

— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;

— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.

Источник: ЕГЭ по информатике 20.06.2023. Основная волна. Дальний Восток

Решение.

Минимальное значение S: 19. После первого хода Пети в куче будет 20, 22 или 38 камней. Если в куче станет 38 камней, Ваня увеличит количество камней в 2 раза и выиграет первым ходом. Когда в куче 20 или 22 камней, можно получить кучу из 23 камней (при S = 20 нужно добавить 3 камня, при S = 22 нужно добавить 1 камень). Тогда после второго хода Пети в куче будет 24 камней, или 26 камней, или 46 камней. Во всех случаях Ваня увеличивает количество камней в куче в 2 раза и выигрывает вторым ходом. Таким образом, ответ — 19.

Ответ: 19.

Задание 24. Обработка символьных строк (18-22 мин)

Тема: Обработка символьных строк.

Что проверяется:

  • умение создавать собственные программы (10–20 строк) для обработки символьной информации;
  • цепочки (конечные последовательности), деревья, списки, графы, матрицы (массивы), псевдослучайные последовательности;
  • строить информационные модели объектов, систем и процессов в виде алгоритмов. 

Что нужно знать:

  • первым делом нужно прочитать строку из файла; эта задача в разных языках программирования решается несколько по-разному;
  • уметь находить самую длинную цепочку любых символов с заданными параметрами поиска.

Задача:

Текстовый файл состоит из заглавных букв латинского алфавита Q, R, W и цифр 1, 2, 4. Определите в прилагаемом файле максимальное количество идущих подряд символов, среди которых ни одна буква не стоит рядом с буквой, а цифра  — с цифрой. Для выполнения этого задания следует написать программу.

Источник: ЕГЭ по информатике 09.04.2024. Досрочная волна

Приведём пример части символов из файла:

4211224Q241Q2441424424114141QW2121211W41211Q44W222R4222R42444141242144QR4241444111414211R141241R22212Q211212…

Решение.

Приведём решение на языке Python.

f = open('1_24.txt')

s = f.read()

count, maxi = 1,0

i = 0

for i in range(1,len(s)):

    if (s[i-1] not in 'QRW' or s[i] not in 'QRW') and (s[i-1] not in '124' or s[i] not in '124'):

        count += 1

    else:

        maxi = max(maxi,count)

        count = 1

print(maxi)

В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — 17.

Ответ: 17.

Задание 26. Обработка целочисленной информации (35-40 мин)

Тема: Обработка массива целых чисел из файла. Сортировка.

Что проверяется:

  • умение обрабатывать целочисленную информацию с использованием сортировки;
  • построение алгоритмов и практические вычисления;
  • строить информационные модели объектов, систем и процессов в виде алгоритмов.

Что нужно знать при написании программы

  • чтение данных из файла;
  • хранение массива данных;
  • сортировка массива.

Задача:

В кондитерской есть N круглых форм для коржей. Специализация кондитерской — многоярусные торты, в которых диаметр каждого верхнего коржа меньше диаметра предыдущего. Один корж можно поместить на другой, если его диаметр хотя бы на 4 единицы меньше диаметра другого коржа. Определите наибольшее количество коржей, которое можно использовать для создания многоярусного торта, и максимально возможный диаметр самого маленького коржа.

Входные данные

В первой строке входного файла находится число N — количество форм для коржей в кондитерской (натуральное число, не превышающее 10 000). В следующих N строках находятся значения диаметров форм для коржей (все числа натуральные, не превышающие 10 000), каждое — в отдельной строке. Диаметр формы равен диаметру коржа, который выпекается в этой форме. Запишите в ответе два целых числа: сначала наибольшее количество коржей, которое можно использовать для создания одного многоярусного торта, затем — максимально возможный диаметр самого маленького коржа в таком торте.

Типовой пример организации данных во входном файле:

5 43 40 32 40 30

Пример входного файла приведён для пяти коржей и случая, когда минимальная допустимая разница между диаметрами коржей, подходящих для изготовления многоярусного торта, составляет 3 единицы. 

При таких исходных данных условию задачи удовлетворяют наборы коржей с диаметрами 30, 40 и 43 или 32, 40 и 43 соответственно, т. е. количество коржей равно 3, а максимально возможный диаметр самого маленького коржа равен 32.

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов. Приведём пример части цифр из файла:

10000 1480 3624 9615 6566 2940 8611 2954 5464 4730 3074 6966…

Источник: ЕГЭ по информатике 09.04.2024. Досрочная волна

Решение. 

Приведем решение на языке Python.

f = open('1_26.txt')

n = int(f.readline())

a = [int(i) for i in f]

a.sort(reverse = True)

count = 1

diametr = a[0]

for i in range(1,len(a)):

    if diametr - a[i] >= 4:

        count += 1

        diametr = a[i]

print(count,diametr)

Ответ: 2172 50.

Задание 27. Программирование (35-45 мин)

Тема: Обработка данных, вводимых из файла в виде последовательности чисел. 

Что проверяется: 

  • умение создавать собственные программы (20–40 строк) для анализа числовых последовательностей;
  • построение алгоритмов и практические вычисления;
  • строить информационные модели объектов, систем и процессов в виде алгоритмов. 

Что нужно знать: 

  • как прочитать данные из файла;
  • основы комбинаторики;
  • динамическое программирование.

Важно. Так как в компьютерном ЕГЭ само решение не проверяется и основной задачей становится получение правильного ответа, возможно, не будет задач 27, которые можно решить переборными алгоритмами с квадратичной сложностью (оценка O(n2)). Задача 27 в демоварианте КИМ даёт представление о типе задач, которые такими алгоритмами не решаются. Вероятно, будут предложены задачи, в которых полный перебор вариантов имеет сложность O(2N) или O(N!), однако использование динамического программирования позволяет быстро решить задачу за один проход.

Задача:

На вход программы поступает последовательность из N целых положительных чисел. Рассматриваются все пары различных элементов последовательности (элементы пары не обязаны стоять в последовательности рядом, порядок элементов в паре неважен). Необходимо определить количество пар, для которых произведение элементов кратно 62.

Входные данные.

Файл A

20 410 964 971 509 214 6 786 710 224 246 892 392 290 104 901 821 688 301 109 159

Файл B

В первой строке входных данных задаётся количество чисел N (1 ≤ N ≤ 60 000). В каждой из последующих N строк записано одно натуральное число, не превышающее 10 000. В качестве результата программа должна вывести одно число: количество пар, в которых произведение элементов кратно 62.

Пример организации исходных данных во входном файле: 5 2 6 13 31 93

Пример выходных данных для приведённого выше примера входных данных: 4 

В ответе укажите два числа: сначала значение искомой суммы для файла А, затем для файла B.

Пояснение. Из 5 чисел можно составить 4 пары, удовлетворяющие условию. Для заданного набора чисел получаем пары (2, 31), (2, 93), (6, 31), (6, 93).

Приведём пример части цифр из файла:

60000 886 348 587 484 459 735 437 144 89 438 570 375 256 834 534…

Решение.

Произведение двух чисел делится на 62, если выполнено одно из следующих условий (условия не могут выполняться одновременно).

А.  Оба сомножителя делятся на 62.

Б.  Один из сомножителей делится на 62, а другой не делится.

В.  Ни один из сомножителей не делится на 62, но один сомножитель делится на 2, а другой — на 31.

При вводе чисел можно определять, делится ли каждое из них на 62, 2 и 31, и подсчитывать следующие значения:

1)  n62 — количество чисел, кратных 62;

2)  n31 — количество чисел, кратных 31, но не кратных 62;

3)  n2 — количество чисел, кратных 2, но не кратных 62.

Количество пар, удовлетворяющих условию А, можно вычислить по формуле n62 · (n62 – 1)/2.

Количество пар, удовлетворяющих условию Б, можно вычислить по формуле n62 · (N – n62). 

Количество пар, удовлетворяющих условию В, можно вычислить по формуле n2 · n31.

Поэтому искомое количество пар вычисляется по формуле n62 · (n62 – 1)/2 + n62 · (N – n62) + n2 · n31.

Решение.

Напишем решение задачи на языке Pascal.

var

     N: integer; {количество чисел}

      a: integer; {очередное число}

      n62, n31, n2: integer;

      k62: integer; {количество требуемых пар}

      i: integer;

  f: text;

begin

n62:=0; n31:=0; n2:=0;

assign(f,'27989_A.txt');

reset(f);

readln(f, n);

for i := 1 to n do begin

readln(f, a);

if a mod 62 = 0 then

              n62 := n62+1

        else if a mod 31 = 0 then

             n31:= n31 + 1

         else if a mod 2 = 0 then

             n2 := n2 + 1;

     end;

     k62 := n62*(n62-1) div 2 + n62*(N-n62) + n2*n31;

     writeln(k62)

end.

В результате работы данного алгоритма при вводе данных из файла A ответ — 0, из файла B — 82307095.

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

Приведём другое решение на языке Python.

f = open("27990_B.txt")  # для файла A укажите его название 

s = f.readlines()

n = int(s[0])

k = 0

k_0 = 0

k_62 = 0

k_2 = 0

k_31 = 0

for i in range(1, n + 1):

    s[i] = int(s[i])

    if s[i] % 62 == 0:

        k_62 += 1

    elif s[i] % 31 == 0:

        k_31 += 1

    elif s[i] % 2 == 0:

        k_2 += 1

    else:

        k_0 += 1

k = k_62 * k_0 + k_31 * k_2 + k_62 * k_31 + k_62 * k_2 + (k_62 * (k_62 - 1)) // 2

print(k)

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

Больше программируйте. Это пригодится Вам для получения максимального количества баллов. Более половины заданий в ЕГЭ связаны именно с программированием. Выберите один язык и делайте упор именно на него.

Эффективная подготовка, включающая практические задания, поможет справиться с новыми вызовами, которые ставит перед нами ЕГЭ по информатике в 2025 году.

Удачи!

Текст подготовил Моисеенко Александр Алексеевич, преподаватель математики, физики и информатики



Получай информацию первым!

Подпишись на новостные ленты в VK, OK, Яндекс Дзен или на почтовую рассылку.