О задании
Ранее мы уже познакомились с операциями алгебры логики и изучили основные законы математической логики. Теперь настало время применить полученные знания на практике и научиться решать 15 задания ЕГЭ по информатике.
Эти задания направлены на проверку знаний основных понятий и законов математической логики. И суть их заключается в том, что вам необходимо проанализировать представленное логическое выражение, переписать его, используя синтаксис языка Python и подобрать возможные значения для заданных переменных.
И именно на подборе таких значений будут основываться как ручные, так и программные методы решения большинства типов 15 заданий. Кстати об этом, это задание самое богатое на количество типов, здесь их можно насчитать целых 5 штук. Разберём их по очереди:
- Задания первого типа самые простые, в них даётся логическое выражение, содержащее некоторую неизвестную переменную А. Нужно подобрать такое значение этой переменной, при котором логическое выражение будет всегда истинным.
- В заданиях второго типа фигурируют название некоторых нетипичных функций: ДЕЛ(), ТРЕУГ() и так далее. Требуется лишь правильно записать действие этой функции, а далее все решение будет аналогично первому типу.
- И задания третьего типа, на самом деле, тоже не сильно отличаются от рассмотренных ранее. Только здесь предстоит работать с поразрядной конъюнкцией. Для ручного решения это может привнести некоторые трудности, но в программном методе отличий не будет никаких.
- А вот с заданиями четвёртого типа придётся постараться. В таких заданиях обычно даются два отрезка и требуется найти наименьшую или наибольшую длину некоторого отрезка А, для которого будет истинно логическое выражение. Программное решение здесь хоть и шаблонное, но довольно непростое для понимания.
- Наконец, задания пятого типа самые молодые — необычная формулировка была замечена в сборнике Крылова С.С. за 2026 год. Характерной чертой этих заданий является работа с множеством всех натуральных делителей какого-либо числа.
Это лишь краткие и поверхностные описания каждого типа, которые позволят вам сразу, по ключевым словам в формулировках задания, понимать, к какому типу их отнести и, главное, к какой статьи обратиться для их успешного решения. Ведь как обычно, под каждый тип 15 задания мы отведём свою статью, в которой рассмотрим базовые формулировки, выведем алгоритм как ручного, так и программного решения и научимся применять его на примере нескольких заданий.
Эта же статья посвящена первому типу, здесь мы вспомним, как применять законы математической логики, как раскрывать несколько логических операций внутри выражения и научимся подбирать значения для неизвестного числа.
Алгоритм решения
Перед тем как перейдём к разбору алгоритма решения задания 15, давайте заострим внимание на некоторых основных моментах.
В формулировках 15 заданий часто будут встречаться слова «натуральные» или «целые» числа. Давайте вспомним, какие бывают множества чисел.
Начнём с самого малого — множества натуральных чисел. Натуральными называются числа, которые получаются при естественном счёте: 1, 2, 3 и так далее. То есть диапазон натуральных чисел N содержит числа от 1 до +∞. Здесь мы говорим только о целых числах, то есть не содержащих дробную часть!
Далее можно рассмотреть множество неотрицательных чисел. Неотрицательные числа включают в себя натуральные числа и 0. То есть содержат все числа от 0 до +∞.
Ну и последнее множество, которое будет использоваться в данных заданиях, — целые числа. Множество целых чисел представляет собой объединение натуральных чисел с противоположными им (1 и -1, 2 и -2), а также с нулём. То есть все числа от –∞ до +∞ (без дробной части).
Положительным называются действительные числа, больше нуля (1, 2, 3 и т.д.). Множеством неотрицательных чисел называется объединение множества положительных чисел и нуля (0, 1, 2, 3 и т.д.). То есть неотрицательные числа включают в себя 0, но не могут быть отрицательными. Положительные же числа — это все, что строго больше нуля.
С основными терминами разобрались, теперь смело перейдём к решению 15 заданий. Для начала рассмотрим задание с такой формулировкой:
«Для какого наименьшего целого неотрицательного числа А логическое выражение (78125 ≠ y + 4x) ∨ (A > x) ∧ (A > y) истинно (т.е. принимает значение 1) при любых целых положительных х и у?»
Решать его мы будем вручную. Давайте внимательно посмотрим на выражение и определим, в каких случаях оно будет истинным.
Первым делом вспоминаем приоритет логических операций (НЕ, И, ИЛИ). Расставим скобки в исходном выражении, чтобы подчеркнуть приоритет операций:
(78125 ≠ y + 4x) ∨ ((A > x) ∧ (A > y))
То есть первой операцией будет конъюнкция (A > x) ∧ (A > y), а затем дизъюнкция её результата с выражением 78125 ≠ y + 4x.
И далее наша задача во всех 15 заданиях этого и схожих типов определить условия, при которых выражение станет ложно! И от этих условий в дальнейшем мы и будем отталкиваться при подборе значений для числа А.
Согласно законам де Моргана дизъюнкция ложна только тогда, когда оба операнда ложны. То есть всё выражение ложно, если одновременно:
- 78125 = y + 4x
- (A > x) ∧ (A > y) — ложно
Перейдём к конъюнкции. Она может быть ложной, когда хотя бы одно из условий ложное:
(A ≤ x) ∨ (A ≤ y)
Здесь мы инвертировали операции и заменили конъюнкцию на дизъюнкцию.
Следовательно, чтобы всё выражение было ложным, требуется одновременное выполнение обоих условий при любых значениях переменных x, y:
- 78125 = y + 4x
- x ≥ A или y ≥ A
Но, а для решения задания нужно наоборот, чтобы таких пар не существовало. Для этого сначала найдём граничные значения для x и y относительно переменной A.
Рассмотрим первое выражение в таком формате: y = 18125 – 4x. Это уравнение прямой на плоскости. При целых значениях x будут получаться целые y. Теперь рассмотрим второе условие: x ≥ A или y ≥ A.
Чтобы выражение всегда было истинным, для любой точки на этой прямой должно выполняться:
x < A и y < A
То есть все решения уравнения должны лежать строго внутри квадрата:
0 < x < A
0 < y < A
Рассматриваем положительные целые x и y. Максимальное x получается при минимальном y:
y ≥ 1
⇒ 78125 − 4x ≥ 1
⇒ 4x ≤ 78124
⇒ x ≤ 19531
В таком случае y будет равняться единице: y = 78125 − 4·19531 = 1. А максимальное y будет при минимальном x:
x ≥ 1
⇒ y = 78121
Всё, мы на финишной прямой. Поскольку уже найдены граничные значения для переменных (1, 19531 для x и 1, 78121 для y) мы можем найти наименьшее значение для A, исходя их выражений: x < A и y < A.
То есть значение А должно быть строго больше максимальных возможных значений для x и y. Максимальное из них — это 78121. Следовательно, A будет равняться 78122, как минимальное целое число, большее 78121.
Число 78122 и будет ответом на это задание.
Теперь давайте проанализируем наши действия и выведем алгоритм решения:
- Приводим выражение к однозначному виду: определяем приоритет операций и расставляем скобки внутри выражения.
- Выписываем условия ложности всего выражения. Ключевая мысль такая: «Тождественно истинно» = нет ни одного набора x, y, при котором выражение ложно. Определяем ложность выражения исходя из законов математической логики (чаще всего по законам де Моргана). Таким образом, получаем систему условий для всех переменных — только неравенства, без логических операций.
- Определяем граничные условия. Ищем такие значения переменных x, y, при которых система только-только начинает иметь решения. Именно здесь появляется число, вокруг которого крутится ответ.
- Связываем граничные условия с параметром А. Можно буквально проговорить: «Чтобы такие x, y существовали, значение А должно быть…».
Это основной алгоритм, но также рекомендуется дополнительно проверить истинность всего выражения, подставляя бóльшие и меньшие значения А (например, А+1 и А-1). Если при этих значениях выражения становится ложным, то число А выбрано верно.
Пример 1
Давайте закрепим выведенный алгоритм на примере решения такого задания:
«Для какого наибольшего целого неотрицательного числа A выражение (x + y <= 30) ∨ (y <= x + 2) ∨ (y >=A) тождественно истинно, т.е. принимает значение 1 при любых целых положительных x и y?»
Пойдём по порядку. Сначала приведём выражение к однозначному виду. Здесь работаем только с дизъюнкцией, так что приоритет операций не играет роли. Этот шаг можем пропустить.
Далее выписываем условия ложности всего выражения. Дизъюнкция ложна тогда и только тогда, когда все три части выражения ложны одновременно:
- x + y > 30
- y > x + 2
- y < A
Так мы получили систему из трёх неравенств без логических операций. Можем перейти к определению граничных условий. Для этого объединим второе и третье неравенство: x + 2 < y < A.
А из первого неравенства вынесем y: y > 30 – x
Сделаем выводы: y должен быть больше максимального из значений x + 2 и 30 – x, но меньше A.
Найдём максимальное значение для выражений x + 2 и 30 – x. Рассмотрим оба выражения:
- Значение x + 2 растет при увеличении x
- 30 − x убывает при увеличении x
Пока одно значение выражения растёт при увеличении x, другое — убывает. Но наступает момент, когда они становятся равными.
Именно в этот момент максимум становится наименьшим возможным, то есть одинаковым для обоих выражений (оранжевая точка на рисунке ниже). С точки зрения геометрии это самая низкая высота (значение y), на которой можно оказаться выше обеих прямых y = x + 2 и y = 30 – x одновременно.
Чтобы найти эту точку, приравняем оба выражения и вычислим x:
x + 2 = 30 − x
2x = 28
x = 14
Подставляем в исходные выражения:
x + 2 = 14 + 2 = 16
30 – x = 30 – 14 = 16
Это и есть граничное значение. Отсюда сделаем вывод, что y больше 16. Вернёмся к графику выше. Значение 16 как раз означает, что каким бы не был x, хотя бы одно из выражений (x + y <= 30) и (y <= x + 2) будет истинно.
Давайте проверим это, пусть x = 1:
- 1 + 16 <= 30 (истина)
- 16 <= 1 + 2 (ложь)
Хотя бы одна истина есть, значит, все верно. А теперь пусть x будет равен какому-нибудь большому числу, например, 100:
- 100 + 16 <= 30 (ложь)
- 16 <= 100 + 2 (истина)
И снова одна истина есть, значит, всё выражение из условия уже будет истинно при любом x (и y >= 16).
Но нам чётко сказано, что выражение должно быть истинным как при любом x, так и при любом y. С x разобрались, а добиться истинности при любом y можем как раз за счет выражения y >=A (точнее его инверсии — y > A).
Значит, A должно быть больше y, ближайшее целое неотрицательное число, большее 16 будет 17.
То есть что получается: при значениях y, меньших 16 одно из первых двух выражений будет истинно вне зависимости от значений x: (x + y <= 30), (y <= x + 2). А при значениях y, больших 16 истинным всегда будет выражение y >=A (y >= 17).
Вот и всё решение, мы готовы дать ответ на это задание — число 17.
Программное решение
Что же, к ручному методу мы вернёмся в разборах следующих типов, а теперь давайте разберём программное решение. Его суть до безобразия проста: мы не вручную вычисляем все возможные значения для неизвестных, при которых выражение будет истинно, а перебираем их в программе.
Как и с ручным методом, давайте сразу на примере реальной задачи напишем решение и потом его подробно разберём.
Формулировка будет следующая:
«Для какого наибольшего целого неотрицательного числа A выражение (x < A) ∧ (y < 3A) ∨ (x > 56) тождественно истинно, т.е. принимает значение 1 при любых целых положительных x и y?»
Для начала нам следует переписать выражение в виде функции f():
И теперь в основном цикле будем перебирать допустимые значения числа A (пока что до сотни):
И проверять, выполняется ли записанное выражение при абсолютно всех значениях переменных x и y от 1 и до какой-то верхней границы. Верхнюю границу подбираем опытным путём, например, здесь выберем границей число 500.
Эти значения для x и y, само собой, будем перебирать во вложенных циклах for. И передавать их в написанную ранее функцию f():
Если для всех перебираемых значений x, y при текущем A функция будет возвращать истину, то выводим это значение А на экран и завершаем цикл оператором break:
Готово! Достаточно лишь запустить эту программу, чтобы получить ответ на текущее задание. В нашем случае это будет число 54.
В целом, такой несложный код подходит для решения первых трёх типов 15 заданий ЕГЭ по информатике. От вас лишь потребуется заменить выражение внутри функции f() и, по необходимости, верхние границы переменных.
Но практиковаться в использовании этого кода мы уже будем в следующих статьях, посвященных второму и третьему типу 15 заданий.