Учебник reknow · 11 класс
ЕГЭ: информатика: теория
17 тем — объяснения простым языком, формулы, рисунки и разобранные примеры. К каждой теме — тренажёр.
Оглавление
- Задание 1 ЕГЭ по информатике: графы и таблицы
- Задание 2 ЕГЭ по информатике: таблицы истинности
- Задание 4 ЕГЭ по информатике: кодирование и декодирование
- Задание 5 ЕГЭ по информатике: формальное исполнение алгоритма
- Задание 6 ЕГЭ по информатике: результат работы алгоритма
- Задание 7 ЕГЭ по информатике: объём памяти — графика и звук
- Задание 8 ЕГЭ по информатике: измерение количества информации
- Задание 10 ЕГЭ по информатике: маска подсети
- Задание 11 ЕГЭ по информатике: информационный объём сообщения
- Задание 12 ЕГЭ по информатике: исполнитель Редактор
- Задание 13 ЕГЭ по информатике: анализ хода исполнения алгоритма
- Задание 14 ЕГЭ по информатике: позиционные системы счисления
- Задание 15 ЕГЭ по информатике: математическая логика
- Задание 19 ЕГЭ по информатике: анализ алгоритма игры
- Задание 20 ЕГЭ по информатике: выигрышная стратегия
- Задание 21 ЕГЭ по информатике: дерево игры
- Задание 23 ЕГЭ по информатике: алгоритмические задачи с графами
Задание 1 · ЕГЭ, информатика 2027
Задание 1 ЕГЭ по информатике: графы и таблицы
Потренироваться: задания по теме →Простыми словами
У вас есть карта района без подписей расстояний и таблица расстояний, где улицы названы номерами П1, П2… Сначала нужно понять, какой номер — какая точка на карте, и только потом считать маршрут.
Один объект описан дважды: схемой (граф) и таблицей (весовая матрица). Нумерация в них никак не связана — первая работа задания 1 наложить одно на другое.
Степень вершины — число дорог, выходящих из пункта. На схеме это число линий у кружка, в таблице — число заполненных клеток в строке.
Пример: схема и таблица
| П1 | П2 | П3 | П4 | П5 | П6 | |
|---|---|---|---|---|---|---|
| П1 | 9 | 5 | 1 | |||
| П2 | 6 | |||||
| П3 | 9 | 3 | 4 | |||
| П4 | 3 | 8 | ||||
| П5 | 5 | 6 | 8 | |||
| П6 | 1 | 4 |
Вопрос: найдите длину кратчайшего пути из А в Е.
Сопоставление по степеням
- Степени в таблице: П1 — 3, П2 — 1, П3 — 3, П4 — 2, П5 — 3, П6 — 2. На схеме: А, В, Д — 3; Б, Г — 2; Е — 1.
- Начинаем с уникальной степени: единственная вершина степени 1 — Е = П2. Её сосед Д = П5.
- Соседи Д на схеме — В, Г, Е; у П5 — П1, П4, П2. Степень 2 среди них только у П4 → Г = П4, тогда В = П1.
- Оставшиеся: А (степень 3) = П3, Б (степень 2) = П6. Проверка: А–Б есть — клетка П3–П6 заполнена ✓
Каждый вывод проверяйте по соседям: если А = П3, то у П3 должны быть соседи Б, В, Г, то есть П6, П1, П4 — так и есть.
Кратчайший путь по таблице
Длины берём только из таблицы. Идём от А и для каждого пункта храним наименьшее известное расстояние, обновляя его, если нашёлся обход короче.
- А = 0: Б = 4, В = 9, Г = 3.
- Г (3): Д = . Б (4): В = — лучше 9.
- В (5): Д = — лучше 11.
- Д (10): Е = . Ответ: 16 (путь А–Б–В–Д–Е).
Где теряют балл: считают длину пути по схеме «на глаз», хотя числа есть только в таблице; забывают, что путь в обход может оказаться короче прямой дороги (А–В напрямую 9, а через Б — 5).
Различайте вершины по степеням их соседей: «вершина степени 3, у которой сосед степени 1» встречается один раз.
Задание 2 · ЕГЭ, информатика 2027
Задание 2 ЕГЭ по информатике: таблицы истинности
Потренироваться: задания по теме →Простыми словами
Дан «пазл»: логическая функция и несколько строк её таблицы истинности, но подписи столбцов x, y, z стёрты. Нужно вернуть каждую подпись на место — так, чтобы все строки фрагмента согласовались с формулой.
Решение всегда одно: построить полную таблицу функции, отобрать строки с нужным значением и приложить к ним фрагмент.
Логические операции
| Операция | Запись | Когда | Python |
|---|---|---|---|
| отрицание | меняет значение на противоположное | not A | |
| конъюнкция (И) | 1 только когда оба равны 1 | A and B | |
| дизъюнкция (ИЛИ) | 0 только когда оба равны 0 | A or B | |
| импликация | 0 только при | A <= B | |
| эквиваленция | 1 при совпадении значений | A == B |
, затем , затем , затем , затем . Скобки — раньше всего.
— обещание «если A, то B». Нарушено оно лишь в одном случае: A случилось (), а B нет (). Отсюда .
Разбор задания
. Фрагмент, все строки с :
| ? | ? | ? | F |
|---|---|---|---|
| 0 | 1 | 1 | 1 |
| 0 | 1 | 0 | 1 |
| 0 | 0 | 0 | 1 |
- Когда ? Нужно , то есть , и . Подходящие : , , — нет только .
- Во всех строках . Столбец из одних нулей — только первый. Значит, первый — .
- Второй и третий — и . Во второй строке они равны и . Если бы второй был , получилось бы — запрещённая пара. Значит, второй — , третий — .
- Проверяем все строки: — все допустимы ✓. Ответ: zyx.
Приёмы и ловушки
Ищите строку фрагмента с самым «редким» сочетанием значений или столбец, который везде одинаков: он сразу закрепляет одну-две переменные, остальные встают на место. Если во фрагменте есть пустые клетки, перебирайте их значения.
print('x y z')
for x in range(2):
for y in range(2):
for z in range(2):
F = (x <= y) and (not z)
if F:
print(x, y, z)Программа печатает все строки с — дальше остаётся приложить к ним фрагмент.
Где теряют балл: записывают буквы «как удобно», а не в порядке столбцов; проверяют соответствие только по одной строке фрагмента, хотя подходить должны все; забывают, что строки фрагмента идут не обязательно в том же порядке, что в полной таблице.
Задание 4 · ЕГЭ, информатика 2027
Задание 4 ЕГЭ по информатике: кодирование и декодирование
Потренироваться: задания по теме →Простыми словами
Телефонные номера экстренных служб устроены так, что ни один не является началом другого: набрали 112 — сразу звонок, ждать продолжения не нужно. В кодировании это называется условием Фано, и задание 4 целиком на нём построено.
Обычно даны двоичные коды нескольких букв, и нужно подобрать кратчайший код для ещё одной буквы так, чтобы сообщения по-прежнему расшифровывались однозначно.
Условие Фано
Ни одно кодовое слово не является началом другого. Тогда сообщение декодируется однозначно, читая слева направо.
Ни одно слово не является окончанием другого. Тогда сообщение однозначно читается справа налево.
Каждого из условий достаточно для однозначного декодирования. Если в задаче не сказано иначе, проверяют прямое условие.
А — 0, Б — 01, В — 10. Запись — это «А В» () или «Б А» ()? Код А является началом кода Б — условие Фано нарушено.
Двоичное дерево кодов
Коды удобно представить ветвями дерева: 0 — влево, 1 — вправо. Занятое слово закрывает всё своё поддерево и весь путь к нему. Свободное слово — узел, который не лежит на пути к занятому и не находится под занятым.
Разбор: кратчайший код для новой буквы
А — 01, Б — 000, В — 11, Г — 100. Найдите кратчайший код для Д (если их несколько — с наименьшим числовым значением).
- Длина 1: «0» — начало 01 и 000; «1» — начало 11 и 100. Не годятся.
- Длина 2: 00 — начало 000; 01 и 11 заняты; 10 — начало 100. Не годятся.
- Длина 3: 000 занят; 001 — не начало ни одного кода, и ни один код (0, 00) не является его началом. Годится.
- Ответ: 001. (Подошло бы и 101, но .)
Перебирайте слова по возрастанию длины, внутри одной длины — по возрастанию как чисел. Слово годится, если оно не начало ни одного занятого и ни одно занятое не является его началом.
Где теряют балл: проверяют только одну сторону условия («моё слово не начало чужого») и забывают вторую; при нескольких подходящих словах берут не наименьшее.
Если спрашивают наименьшую суммарную длину кодов, используйте дерево: свободные узлы ставьте как можно выше, но не на пути к занятым листьям.
Задание 5 · ЕГЭ, информатика 2027
Задание 5 ЕГЭ по информатике: формальное исполнение алгоритма
Потренироваться: задания по теме →Простыми словами
Рецепт надо выполнять дословно: «добавить соль после варки» — значит после, а не до. Задание 5 — такой же «рецепт» для чисел: алгоритм описан словами, и его нужно выполнить буквально, без догадок о «смысле».
Почти всегда алгоритм работает с двоичной записью числа: приписать разряд, перевернуть, добавить бит по правилу чётности.
Типичный алгоритм
На вход подаётся натуральное . 1) Строится двоичная запись . 2) Справа дописывается остаток от деления суммы её цифр на 2. 3) Пункт 2 повторяется для новой записи. Полученная запись — двоичная запись числа .
После первого приписывания число единиц всегда становится чётным, поэтому второй дописанный бит — всегда 0. Значит, всегда чётно и или . Такие наблюдения помогают проверить ответ, но не заменяют аккуратного выполнения.
Разбор: наименьшее N, при котором R больше 77
- Оценка: , значит, около . Начнём проверку немного раньше.
- : единиц 2 → дописываем 0 → , единиц 2 → 0 → . Мало.
- : → → ✓
- Ответ: . (Если бы спрашивали «наименьшее , большее 77» — ответ 78.)
Где теряют балл: считают сумму цифр исходного числа, хотя шаг стоит после приписывания и сумма считается по текущей записи; ищут наименьшее , а записывают значение (или наоборот).
Надёжный способ — перебор
Не ищите закономерность наугад: прогоните алгоритм на числах подряд, начиная с наименьшего. Нужное значение обычно находится в первых десятках проверок; на компьютере это несколько строк.
for n in range(1, 1000):
s = bin(n)[2:] # двоичная запись без '0b'
for _ in range(2):
s += str(s.count('1') % 2) # дописать остаток суммы цифр
r = int(s, 2) # обратно в десятичную
if r > 77:
print(n, r)
breakbin(n)[2:] — двоичная запись; int(s, 2) — число из двоичной строки; s[::-1] — перевернуть запись; s.count('1') — число единиц.
Порядок шагов менять нельзя. Читайте условие до конца: иногда правило зависит от чётности самого («если чётное, дописать 10, иначе 1»), и обе ветки надо запрограммировать точно.
Задание 6 · ЕГЭ, информатика 2027
Задание 6 ЕГЭ по информатике: результат работы алгоритма
Потренироваться: задания по теме →Простыми словами
Программу не обязательно понимать «целиком». Достаточно стать компьютером: выполнять строку за строкой и записывать, чему равна каждая переменная. Такой способ называется трассировкой.
Таблица трассировки из двух-трёх столбцов решает почти любое задание этого номера: в строке — один проход цикла, в столбцах — значения переменных после него.
Операции, которые встречаются чаще всего
| Запись | Смысл | Пример |
|---|---|---|
a // b | деление нацело | |
a % b | остаток от деления | |
a / b | обычное деление, результат дробный | |
range(a, b) | числа — без | range(1, 4): 1, 2, 3 |
range(a, b + 1) | включает и , и | range(1, 5): 1, 2, 3, 4 |
Цикл while n > 0: c += n % k; n //= k раскладывает по основанию : остаток — последняя цифра, деление нацело — «отбросить» её. В итоге — сумма цифр числа в -ичной системе.
Разбор: цикл while
n = 345
c = 0
while n > 0:
c += n % 6
n //= 6
print(c)| Проход | n % 6 | c | n после //6 |
|---|---|---|---|
| 1 | 3 | 3 | 57 |
| 2 | 3 | 6 | 9 |
| 3 | 3 | 9 | 1 |
| 4 | 1 | 10 | 0 — выход |
Программа выведет 10. Проверка через смысл: , сумма цифр ✓
Разбор: цикл for
s = 0
for i in range(1, 5):
s = s * 2 + i
print(s)- : .
- : .
- : .
- : . Значения 5 нет — range(1, 5) его не включает. Ответ: 26.
Конструкции вида x = x * a + i растут очень быстро — считайте по шагам на бумаге, а не «в уме». А на компьютерном ЕГЭ программу можно просто запустить.
Где теряют балл: забывают, что range(a, b) не включает ; путают / (дробь) и // (нацело); обрывают трассировку на шаг раньше выхода из цикла; печатают не ту переменную.
Задание 7 · ЕГЭ, информатика 2027
Задание 7 ЕГЭ по информатике: объём памяти — графика и звук
Потренироваться: задания по теме →Простыми словами
Картинка на экране — мозаика из точек-пикселей, у каждой свой цвет. Звук в компьютере — длинный ряд замеров громкости. И в том, и в другом случае объём — это «сколько штук × сколько бит на штуку».
В задании 7 считают размер файла с рисунком или звукозаписью без сжатия.
Изображение
где и — ширина и высота в пикселях, — глубина цвета: сколько бит отводится на цвет одного пикселя.
Глубина бит даёт цветов. Наоборот, для цветов нужно наименьшее , при котором : для 100 цветов (), для 256 цветов .
Рисунок , 1 бит на пиксель. Размер в Кбайтах?
- бит.
- В байтах: ; в Кбайтах: .
Так же при 4 битах: Кбайт.
Звук
где — частота дискретизации (замеров в секунду, Гц; 16 кГц = 16 000 Гц), — разрядность (бит на один замер), — число каналов (моно — 1, стерео — 2, квадро — 4), — время в секундах.
Моно, 16 кГц, 32 бита, 64 секунды. Размер в Кбайтах?
- бит.
- байт; Кбайт.
Единицы и ловушки
; байт; байт. А вот «кило» в герцах — 1000: .
Считайте всё в битах, раскладывая числа на степени двойки, и переводите в байты только в самом конце: промежуточные округления — источник почти всех ошибок.
Где теряют балл: делят на 1000 вместо 1024; забывают умножить на число каналов; путают биты и байты в исходных данных; берут без округления вверх, когда — не степень двойки.
Задание 8 · ЕГЭ, информатика 2027
Задание 8 ЕГЭ по информатике: измерение количества информации
Потренироваться: задания по теме →Простыми словами
Кодовый замок с 3 колёсиками по 10 цифр открывается одной из комбинаций. Задание 8 о том же: сколько разных «слов» можно составить из данных букв, если на них наложены условия.
Если на первое место можно поставить вариантов, на второе — и т. д., то всего вариантов . Когда на каждую из позиций можно поставить любую из букв:
«Слово» здесь — любая последовательность букв, не обязательно осмысленная. Порядок букв важен: РСТ и ТСР — разные слова.
Ячейки: сколько вариантов на каждое место
Тот же ответ даёт вычитание: все слова минус начинающиеся с Т — .
Типовые надстройки
| Условие | Как считать |
|---|---|
| Первая буква закреплена | свободны позиций: |
| «Не начинается с X» | , или |
| Все буквы различны | — множителей |
| Ровно одна буква X | выбрать её позицию ( способов) × остальные места без X: |
| Хотя бы одна X | все минус слова совсем без X: |
4-буквенные слова из А, В, Г, Д, Е, где А ровно одна: позиция А — 4 способа, остальные 3 места — из 4 букв: .
Запрет соседства
«Нет двух К подряд» считают по шагам. Пусть — число допустимых слов длины , оканчивающихся на К, — на любую другую из букв.
- : , .
- : , ; : , ; : , .
- : , ; : , .
- Ответ: .
На компьютерном ЕГЭ любое такое условие проверяется программой:
from itertools import product
cnt = 0
for w in product('КЛМНП', repeat=6):
if 'КК' not in ''.join(w):
cnt += 1
print(cnt) # 13056Где теряют балл: считают сочетания вместо размещений, забывая, что порядок букв важен; в «не начинается с X» вычитают не , а что-то другое; для «все буквы различны» используют .
Задание 10 · ЕГЭ, информатика 2027
Задание 10 ЕГЭ по информатике: маска подсети
Потренироваться: задания по теме →Простыми словами
Почтовый адрес «г. Москва, ул. Ленина, д. 5, кв. 12» делится на две части: дом (общий для всех жильцов) и квартира. IP-адрес устроен так же: начало — адрес сети («дом»), конец — номер узла («квартира»). Где проходит граница, показывает маска.
IP-адрес — 4 байта (32 бита), записанные десятичными числами 0–255 через точку: 192.168.157.40. Маска — тоже 4 байта, но устроена жёстко: сначала идут только единицы, потом только нули. Единицы отмечают часть адреса сети, нули — номер узла. Число единиц называют длиной префикса.
Главные формулы
Номер узла — то, что «отрезала» маска: .
Из всех адресов сети два служебные: адрес самой сети (все биты узла — нули) и широковещательный (все биты узла — единицы). Узлам их не выдают.
| Байт маски | 128 | 192 | 224 | 240 | 248 | 252 | 254 | 255 |
|---|---|---|---|---|---|---|---|---|
| Единиц слева | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Других значений у байта маски, кроме этих и 0, не бывает.
Разбор: адрес сети
IP 192.168.157.40, маска 255.255.240.0.
- Байты, где маска 255, переходят в адрес сети без изменений: 192.168. Где маска 0 — обнуляются: последний байт 0.
- В двоичный вид переводим только «смешанный» байт — третий: , .
- Поразрядное «И» даёт . Адрес сети: 192.168.144.0.
Разбор: сколько адресов
IP 23.16.173.15, маска 255.255.248.0. Сколько адресов можно выдать узлам?
- Единиц в маске: ( — пять единиц).
- На номер узла остаётся бит: адресов.
- Минус два служебных: .
IP 165.254.56.151, маска 255.255.224.0: , , «И» — .
Если неизвестна сама маска, переберите длину префикса: модуль ipaddress — ip_network('23.16.173.15/21', strict=False) — сразу даёт адрес сети и число адресов.
Где теряют балл: забывают вычесть два служебных адреса (или вычитают, когда спрашивают про все адреса сети); переводят все четыре байта и путаются; принимают за маску число вида 255.255.100.0, которого не бывает.
Обратные задачи: маска по условию
В подсети нужно выдать не менее 14 адресов узлам. Наибольшее число единиц маски?
- Вместе со служебными нужно не меньше адресов.
- Наименьшая степень двойки, не меньшая 16, — : под узел уходят 4 нулевых разряда.
- Единиц в маске: .
IP 209.95.138.5, адрес сети 209.80.0.0. Второй байт маски?
- , байт сети .
- Маска — сначала единицы, потом нули. Единицы должны сохранить старшие биты , а следующий бит адреса (1) должен обнулиться — значит, единиц в байте ровно 4.
- Байт маски .
Задание 11 · ЕГЭ, информатика 2027
Задание 11 ЕГЭ по информатике: информационный объём сообщения
Потренироваться: задания по теме →Простыми словами
Чемодан берут целиком, даже если вещей на полчемодана. Так и с памятью: под каждую запись отводится целое число байт, и неполный байт всё равно занимается полностью. Именно здесь в задании 11 чаще всего и ошибаются.
Типичный сюжет: в системе хранятся пароли или номера, каждый символ кодируется минимальным одинаковым числом бит, каждая запись — минимальным целым числом байт. Найти объём всех записей (или обратное).
Бит на символ
| Мощность | до 2 | 3–4 | 5–8 | 9–16 | 17–32 | 33–64 | 65–128 | 129–256 |
|---|---|---|---|---|---|---|---|---|
| Бит | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Для 26 букв — 5 бит, для 30 — 5, для 33 — 6, для 64 — 6, для 26 букв и 10 цифр () — 6 бит.
Мощность алфавита — это сколько разных символов можно использовать, а не длина пароля. Если разрешены строчные и заглавные буквы, их считают отдельно.
Порядок вычислений
- Бит на символ: наименьшее , при котором .
- Бит на запись: число символов × .
- Байт на запись: делим на 8 и округляем вверх.
- Всего: байт на запись × число записей.
Пароль — 15 символов из 26 латинских букв и 10 цифр. Каждый символ кодируется минимальным одинаковым числом бит, каждый пароль — минимальным целым числом байт. Сколько байт займут пароли 50 пользователей?
- : , значит, бит.
- На пароль: бит; → 12 байт.
- Всего: байт.
Порядок важен: если округлить в конце ( бит байта), ответ получится меньше истинного. Округляют на уровне одной записи.
Обратные задачи
Каждый символ кодируется 16 битами, сообщение заняло 800 байт: бит, символов.
Пароль занимает 12 байт (как выше), а на 40 пользователей с доп. сведениями ушло 1200 байт. На одного: байт, из них на доп. сведения байт.
Где теряют балл: округляют вниз; считают пробелы между полями, хотя в условии их нет (или наоборот, не считают, хотя они названы символами); путают число символов и мощность алфавита.
Задание 12 · ЕГЭ, информатика 2027
Задание 12 ЕГЭ по информатике: исполнитель Редактор
Потренироваться: задания по теме →Простыми словами
Функция «Найти и заменить» в текстовом редакторе, но с одним отличием: Редактор меняет только первое найденное вхождение, а потом снова ищет с начала строки. Из-за этого цепочки «переезжают» по строке, и результат часто неочевиден.
Как читать программу
НАЧАЛО
ПОКА нашлось (111)
заменить (111, 2)
заменить (222, 1)
КОНЕЦ ПОКА
КОНЕЦТело цикла выполняется, пока условие истинно. Внутри обе команды выполняются по очереди на каждом проходе, даже если вторая ничего не находит.
Разбор: строка из 100 единиц
Ручная трассировка ста символов долгая. Есть два надёжных пути.
s = '1' * 100
while '111' in s:
s = s.replace('111', '2', 1) # 1 — только первое вхождение
s = s.replace('222', '1', 1)
print(s) # 21Третий аргумент 1 у replace — ровно «первое вхождение», как у Редактора. Без него Python заменит все вхождения сразу — это другой исполнитель.
Припишем «вес»: символ 1 весит 1, символ 2 весит 3. Замена вес не меняет (), замена уменьшает его на 8. Значит, остаток веса при делении на 8 не меняется.
- Начальный вес , остаток .
- Цикл кончается, когда нет 111, а «222» уже убрано, — остаётся короткая строка с весом 4: например, «21» ().
- Программа подтверждает: 21; сумма цифр — 3.
Рабочий метод и ловушки
Прогоните программу на короткой строке (5–8 символов), потом на строке на один символ длиннее — и увидите правило. Почти всегда длина уменьшается на постоянную величину, а ответ определяет остаток от деления.
Замена « одинаковых → 1» укорачивает строку на за шаг, пока длина не станет меньше : итог определяется остатком от деления на . Замена вида «ab → bba» строку не укорачивает, а удлиняет: каждый символ a, проходя сквозь хвост, удваивает количество b.
Где теряют балл: заменяют все вхождения сразу вместо первого; путают порядок проверок в ЕСЛИ…ИНАЧЕ ЕСЛИ; обрывают цикл, когда «кажется, что дальше понятно».
Задание 13 · ЕГЭ, информатика 2027
Задание 13 ЕГЭ по информатике: анализ хода исполнения алгоритма
Потренироваться: задания по теме →Простыми словами
Исполнитель умеет две вещи — прибавить и умножить. Сколько разных программ переведут число A в число B? Перебирать программы долго; гораздо быстрее идти по числам от A к B и для каждого записывать, сколькими способами до него можно добраться.
Это тот же приём, что и подсчёт путей в графе: числа — вершины, команды — стрелки.
В 2027 году этот номер получил новую тему. Задания прошлых лет под номером 13 относились к маске подсети — не путайте источники.
Главная формула
где — число программ из A в , — шаг команды «прибавь», — множитель команды «умножь». Второе слагаемое берётся, только если делится на нацело и частное не меньше A. База: ; для чисел меньше A — .
Почему так: последняя команда программы — либо «прибавь» (тогда до неё было ), либо «умножь» (тогда было ). Эти случаи не пересекаются, поэтому их количества складываются.
Разбор: из 2 в 12
Команды: 1) прибавь 1, 2) умножь на 2. Сколько программ переводят 2 в 12?
- , (3 нечётное — только +1).
- ; ; ; .
- ; ; ; .
- . Ответ: 10.
Обязательные и запрещённые числа
def f(a, b):
if a > b: return 0
if a == b: return 1
return f(a + 1, b) + f(a * 2, b)
print(f(2, 12)) # 10
print(f(2, 6) * f(6, 12)) # через 6: 6Рекурсия идёт от начала: из можно перейти в или . Для «не содержит C» добавьте строку if a == c: return 0.
Где теряют балл: берут слагаемое , когда не делится на или частное меньше A; для «содержит C» складывают вместо умножения; не обнуляют запрещённое число.
Задание 14 · ЕГЭ, информатика 2027
Задание 14 ЕГЭ по информатике: позиционные системы счисления
Потренироваться: задания по теме →Простыми словами
В десятичной системе — единица и пять нулей, а — пять девяток. В любой системе с основанием происходит то же самое. На этом наблюдении строится всё задание 14: огромные числа вроде не надо вычислять — достаточно понять, как выглядит их запись.
где — основание, — цифры от до . Перевод из десятичной: делить на , выписывая остатки, и читать их снизу вверх.
Три главных факта
в системе с основанием — это единица и нулей. Сумма разных степеней — запись из единиц и нулей.
— это цифр . Поэтому при — это цифр , за которыми нулей.
, , . Одна восьмеричная цифра — ровно три двоичных разряда, шестнадцатеричная — четыре. Поэтому , .
Разбор заданий
Сколько единиц в двоичной записи ?
- — одна единица; — одна единица.
- — две единицы. Разряды не пересекаются (20, 7 и 1–0).
- Всего .
Сколько значащих нулей в шестнадцатеричной записи ?
- — цифра 2 и 11 нулей: .
- — 4 цифры без нулей.
- Сумма: — из 11 нулей четыре младших заняты цифрами FFE6, остаётся .
x = 8**15 + 4**8 - 26
print(hex(x)[2:].count('0')) # 7
# для другой системы — делим в цикле:
n, b, zeros = x, 3, 0
while n > 0:
zeros += (n % b == 0)
n //= b
print(zeros)Python работает с целыми числами любой длины, поэтому ответ можно получить напрямую.
Ловушки
Где теряют балл: считают «значащие нули», включая ведущий (его нет — запись числа начинается с ненулевой цифры); забывают про заём при вычитании и теряют цепочку цифр ; складывают степени, у которых совпадают разряды ( — разряд переносится).
«Степень — единица с нулями, минус — цепочка максимальных цифр». В двоичной максимальная цифра 1, в восьмеричной 7, в шестнадцатеричной F.
Задание 15 · ЕГЭ, информатика 2027
Задание 15 ЕГЭ по информатике: математическая логика
Потренироваться: задания по теме →Простыми словами
Правило «если идёт дождь, я беру зонт» нарушается только в одном случае: дождь идёт, а зонта нет. Задание 15 — подобрать такой параметр , чтобы формула ни при одном не оказалась нарушенной.
Формула тождественно истинна, если она равна 1 при любом допустимом значении . Проверять все вручную не нужно — достаточно найти, при каком сочетании условий формула ложна, и потребовать, чтобы такого не существовало.
Задачи с отрезками
, . Наибольшая длина отрезка , при которой тождественно истинна?
- Формула ложна, когда , и .
- Чтобы такого не было, всё, что попало в , должно лежать в или в : .
- и не пересекаются, а — один отрезок, поэтому он целиком внутри (длина ) или внутри (длина ). Ответ: 13.
Если просят наименьшую длину, обычно должен, наоборот, покрывать какую-то часть прямой. Всегда начинайте с вопроса «когда формула ложна?».
Задачи с делимостью (ДЕЛ)
ДЕЛ — « делится на без остатка». Наименьшее , при котором ДЕЛДЕЛ ДЕЛ тождественно истинна?
- Ложна, когда кратно , но не кратно ни 30, ни 14.
- Возьмём : тогда само обязано делиться на 30 или на 14.
- Наименьшее такое — 14. Проверка: любое кратное 14 делится на 14 ✓
Формула с ДЕЛ зависит только от остатков, поэтому при проверке перебором достаточно одного полного периода — до НОК участвующих чисел.
Поразрядная конъюнкция
— поразрядное «И» двоичных записей. — «у есть хотя бы один общий единичный бит с ».
Наименьшее , при котором тождественно истинна.
- Ложна, когда , и .
- , . Раз у нет битов из 12, общий бит с 29 может быть только в разрядах или ().
- Чтобы любой такой пересекался с , в должны быть оба бита: .
def F(x, A):
return (not (x & 29 != 0)) or (x & 12 != 0) or (x & A != 0)
for A in range(1, 1000):
if all(F(x, A) for x in range(1, 1024)):
print(A) # 17
breakИмпликацию записывайте как (not P) or Q или P <= Q.
Где теряют балл: ищут «наименьшее», когда спрашивают наибольшее; проверяют формулу на нескольких удобных и считают это доказательством; для отрезков путают концы и длину ( имеет длину 11, а не 12).
Задание 19 · ЕГЭ, информатика 2027
Задание 19 ЕГЭ по информатике: анализ алгоритма игры
Потренироваться: задания по теме →Простыми словами
Двое по очереди добавляют камни в кучу. Кто первым доведёт кучу до порога — победил. Задания 19–21 — одна игра и три вопроса про неё. В задании 19 нужно понять самое простое: из каких позиций можно выиграть одним ходом и из каких любой ход отдаёт победу сопернику.
Начальное число камней ; набор ходов (обычно «прибавить » и «умножить на »); порог : игра кончается, когда в куче становится или больше камней. Побеждает игрок, сделавший последний ход. Первым ходит Петя, вторым — Ваня.
Дальше разбираем пример: ходы +1 и ×2, игра кончается при камнях, .
Позиции разбираются от конца
Возьмите порог и посмотрите на самый «сильный» ход: ниже границы мгновенной победы нет. Для ×2: . Для «+2 или ×3» с порогом : .
Типовые вопросы задания 19
При каких ? — при всех из W1: от 15 до 28. Наименьшее — 15.
Найдите наименьшее . «Неудачный ход» — ход Пети, после которого Ваня может выиграть сразу, то есть ход в позицию W1.
- Нужно, чтобы хотя бы один ход Пети вёл в W1 (), а сам Петя не выигрывал сразу.
- Ход ×2: при . Ход +1: при .
- Наименьшее : Петя делает , Ваня — и выигрывает.
Это позиция L1: . Петя может сделать 15 или 28 — в обоих случаях Ваня удваивает кучу и побеждает.
Различайте «после неудачного хода Пети» (достаточно одного плохого хода — это не стратегия) и «при любом ходе Пети» (все ходы проигрывают).
Программа и ловушки
N = 29
def moves(s): return [s + 1, s * 2]
W1 = [s for s in range(1, N) if any(m >= N for m in moves(s))]
L1 = [s for s in range(1, N) if s not in W1
and all(m in W1 for m in moves(s))]
print(W1, L1) # 15..28, [14]Где теряют балл: считают победителем того, кто «перешагнул» порог ходом соперника; забывают проверить оба хода; не учитывают, что ход, сразу выводящий за порог, — тоже ход, и он заканчивает игру.
Задание 20 · ЕГЭ, информатика 2027
Задание 20 ЕГЭ по информатике: выигрышная стратегия
Потренироваться: задания по теме →Простыми словами
Стратегия — это не один удачный ход, а готовый ответ на любой ход соперника. Как в крестиках-ноликах: знаешь, что делать, как бы ни сыграл другой. Задание 20 спрашивает, при каких у Пети есть такая стратегия, приводящая к победе вторым ходом.
Игра та же, что в задании 19. Пример: ходы +1 и ×2, порог , . Уже известно: W1 — от 15 до 28 (победа одним ходом), L1 — (любой ход отдаёт победу).
Слои позиций
Мгновенной победы нет (позиция не W1), но есть ход в такую позицию, откуда каждый ответ соперника оставляет победу одним ходом. Проще: есть ход в L1.
Слово «каждый» — ключевое: достаточно одного спасительного ответа соперника, и стратегия разрушена.
Разбор: два наименьших S
Найдите два наименьших значения , при которых у Пети есть стратегия выиграть вторым ходом, но нет стратегии выиграть первым.
- Ищем ходы в L1 = {14}: ; .
- Проверяем, что это не W1: из 7 и 13 одним ходом до 29 не дойти ✓
- Проверяем стратегию для : Петя — 14; Ваня — 15 или 28; Петя удваивает: или , оба ✓
- Ответ: 7 13 (в порядке возрастания, через пробел).
| S | Ход Пети | Ответ Вани | Ход Пети | Итог |
|---|---|---|---|---|
| 7 | ×2 → 14 | +1 → 15 | ×2 → 30 | победа |
| ×2 → 28 | ×2 → 56 (или +1 → 29) | победа | ||
| 13 | +1 → 14 | +1 → 15 | ×2 → 30 | победа |
| ×2 → 28 | +1 → 29 | победа |
Программа и ловушки
N = 29
def moves(s): return [s + 1, s * 2]
W1 = {s for s in range(1, N) if any(m >= N for m in moves(s))}
L1 = {s for s in range(1, N) if s not in W1 and all(m in W1 for m in moves(s))}
W2 = [s for s in range(1, N) if s not in W1 and any(m in L1 for m in moves(s))]
print(W2) # [7, 13]Если просят два наименьших значения , перебирайте позиции снизу вверх и выписывайте первые два подходящих. Если подходящих больше двух — вы, скорее всего, приняли за L1 позицию, у которой есть спасительный ход.
Где теряют балл: проверяют только «удобный» ответ соперника; включают в ответ позиции W1 («но нет стратегии выиграть первым ходом»); записывают одно число вместо двух.
Задание 21 · ЕГЭ, информатика 2027
Задание 21 ЕГЭ по информатике: дерево игры
Потренироваться: задания по теме →Простыми словами
Задание 21 — самое длинное из игровой тройки. Нужно рассмотреть все ходы Пети и для каждого — лучший ответ Вани, на две пары ходов вперёд. Ветвей немного (обычно 4–8), и ошибаются не от сложности, а от пропущенной ветки.
Пример тот же: ходы +1 и ×2, порог 29. Из заданий 19–20: W1 — от 15 до 28, L1 — 14, W2 — 7 и 13.
Что значит формулировка
«У Вани есть стратегия, позволяющая выиграть первым или вторым ходом при любой игре Пети, но нет стратегии, которая позволит ему гарантированно выиграть первым ходом». Это два условия одновременно:
Позиция, где все ходы ведут в W1 или W2, и хотя бы один — в W2, называется L2. Для нашей игры L2 = {12}: из 12 Петя может пойти в 13 (W2) или в 24 (W1).
Дерево игры для S = 12
- Петя: 12 → 24. Ваня удваивает: 48 ≥ 29 — победа первым ходом.
- Петя: 12 → 13. Ваня не может выиграть сразу (), поэтому ходит +1 → 14 (L1).
- Из 14 Петя может сделать 15 или 28 — обе позиции W1, Ваня выигрывает вторым ходом.
- Условие 1 выполнено (выигрыш при любом ходе), условие 2 тоже (после 13 сразу не выиграть). Ответ: 12.
Таблица разбора и программа
Удобная схема — таблица из четырёх столбцов: позиция, ход Пети, ответ Вани, итог. Кандидатов проверяйте снизу вверх; если подходящих несколько, а спрашивают наименьшее — берите первое.
N = 29
def moves(s): return [s + 1, s * 2]
def win(s, k): # игрок, который ходит из s, выигрывает не позднее k-го хода
if k == 0: return False
return any(m >= N or lose(m, k - 1) for m in moves(s))
def lose(s, k): # каждый ход из s ведёт в позицию, выигрышную для соперника за k
return all(m < N and win(m, k) for m in moves(s))
print([s for s in range(1, N) if lose(s, 2) and not lose(s, 1)]) # [12]Где теряют балл: проверяют только одно из двух условий и берут первое попавшееся (например, 14 — там Ваня выигрывает первым ходом при любой игре, это L1, а не L2); пропускают ход Пети, который сразу выводит за порог (тогда выигрывает Петя, и позиция не подходит).
Задание 23 · ЕГЭ, информатика 2027
Задание 23 ЕГЭ по информатике: алгоритмические задачи с графами
Потренироваться: задания по теме →Простыми словами
Схема дорог с односторонним движением. Сколько разных маршрутов из А в И? Какой из них самый короткий? Обе задачи решаются одним движением по схеме слева направо: для каждого пункта записываем число — сумму (для числа путей) или минимум (для длины пути).
Тематика номера 23 изменена в 2027 году. Раньше под этим номером был анализ хода исполнения алгоритма — материалы прошлых лет по номеру 23 к нынешней теме отношения не имеют.
Количество путей
где — число путей из начальной вершины в . В начальную вершину — один «пустой» путь: . Считать нужно по порядку, чтобы к моменту обработки вершины все её предшественники были уже посчитаны.
- (в них ведёт только А).
- ; .
- ; ; .
Е нельзя считать раньше Д: из Д в Е есть стрелка. Ищите «вертикальные» стрелки внутри одного столбца — их чаще всего пропускают.
Через вершину и в обход
«Через Е и Ж» — три множителя: А→Е, Е→Ж, Ж→И. «Не через Е и не через Ж» — обнулить обе вершины.
Кратчайший путь
То же движение по вершинам, но вместо суммы — минимум:
Дуги: А→Б 3, А→В 1, В→Б 1, Б→Г 2, В→Г 5. Кратчайший путь из А в Г?
- ; .
- .
- — путь А→В→Б→Г.
Где теряют балл: двигаются против стрелки; при «через вершину» складывают части вместо умножения; для кратчайшего пути берут прямую дугу, не проверив обход.