Рубрика «ЕГЭ Задание 15»
ЕГЭ информатика 15 задание разбор, теория, как решать.
Преобразование логических выражений, (П) — 1 балл
Е15.47 Обозначим через ТРЕУГ(n, m, k) утверждение «существует невырожденный треугольник
23.10.2023 ЕГЭ Задание 15 Администратор Комментарии: 0
Обозначим через ТРЕУГ(n, m, k) утверждение «существует невырожденный треугольник с длинами сторон n, m и k». Для какого наибольшего натурального числа А формула ¬((ТРЕУГ(х, 11, 18) ≡ (¬(MAKC(x, 5) > 68))) ⋀ ТРЕУГ(х, А, 5)) тождественно истинна (т. е. принимает значение 1) при любом натуральном значении переменной х? Примечание. МАКС(а, b) = а, если а …
Е15.46 формула (ДЕЛ(x, 3) → ¬ДЕЛ(x, 2)) ∨ (x — A ≥ 4) тождественно истинна
18.06.2023 ЕГЭ Задание 15 Администратор Комментарии: 0
Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m». Для какого наибольшего натурального числа А формула (ДЕЛ(x, 3) → ¬ДЕЛ(x, 2)) ∨ (x — A ≥ 4) тождественно истинна (т.е. принимает значение 1) при любом натуральном значении переменной х? Ответ: Пробник ИМЦ СПб – задание №15
Е15.45 выражения (x & 103 = 0) ∧ (x & 94 ≠ 0) → (x & A ≠ 0) тождественно истинно
17.06.2023 ЕГЭ Задание 15 Администратор Комментарии: 0
Обозначим через m&n поразрядную конъюнкцию неотрицательных целых чисел m и n. Так, например, 14&5 = 11102&01012 = 01002 = 4. Найдите минимальное значение А, при котором значение выражения (x & 103 = 0) ∧ (x & 94 ≠ 0) → (x & A ≠ 0) тождественно истинно, то есть принимает значение 1 при любом натуральном …
Е15.44 формула x&39 = 0 \/ (x&11 = 0 → x&А ≠ 0) тождественно истинна
01.05.2023 ЕГЭ Задание 15 Администратор Комментарии: 0
Обозначим через m&n поразрядную конъюнкцию неотрицательных целых чисел m и n. Так, например, 14&5 = 11102&01012 = 01002 = 4. Для какого наименьшего неотрицательного целого числа А формула x&39 = 0 \/ (x&11 = 0 → x&А ≠ 0) тождественно истинна (т.е. принимает значение 1 при любом неотрицательном целом значении переменной х)? Ответ: Досрочный …
Е15.43 формула (x&35 ≠ 0 ∨ x&22 ≠ 0) → (x&15 = 0 → x&А ≠ 0) тождественно истинна
12.03.2023 ЕГЭ Задание 15 Администратор Комментарии: 0
Обозначим через m&n поразрядную конъюнкцию неотрицательных целых чисел m и n. Например, 14&5 = 11102&01012 = 01002 = 4. Для какого наименьшего неотрицательного целого числа А формула (x&35 ≠ 0 ∨ x&22 ≠ 0) → (x&15 = 0 → x&А ≠ 0) тождественно истинна (т. е. принимает значение 1 при любом неотрицательном целом значении переменной …
Е15.42 Для какого наименьшего натурального числа А формула (ДЕЛ(x, 2) → ¬ДЕЛ(x, 3)) \/ (x + A ≥ 100)
27.10.2022 ЕГЭ Задание 15 Администратор Комментарии: 0
Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m». Для какого наименьшего натурального числа А формула (ДЕЛ(x, 2) → ¬ДЕЛ(x, 3)) \/ (x + A ≥ 100) тождественно истинна (т.е. принимает значение 1) при любом натуральном значении переменной х? Ответ: Демонстрационный вариант ЕГЭ 2023 г. – задание №15
Е15.41 для которого формула ((x ∈ Q) ≡ (x ∈ P)) ∨ (¬(x ∈ A) → ((x ∈ P) ∧ ¬(x ∈ Q))) тождественно истинна
20.04.2022 ЕГЭ Задание 15 Администратор Комментарии: 0
На числовой прямой даны два отрезка: P = [ 6; 4 5] и Q = [18; 52]. Укажите наименьшую возможную длину такого отрезка A, для которого формула ((x ∈ Q) ≡ (x ∈ P)) ∨ (¬(x ∈ A) → ((x ∈ P) ∧ ¬(x ∈ Q))) тождественно истинна (т. е. принимает значение 1 при любом …
Е15.40 выражение (2у + 3х ≠ 135) ∨ (у > А) ∨ (x > A) истинно
22.02.2022 ЕГЭ Задание 15 Администратор Комментарии: 0
Определите наибольшее целое значение A, при котором выражение (2у + 3х ≠ 135) ∨ (у > А) ∨ (x > A) истинно для любых целых положительных значений х и у. Ответ: Апробация ЕГЭ по информатике 19 февраля 2022 – задание №15 Тренировочный экзамен по информатике и ИКТ (КЕГЭ) в компьютерной форме
Е15.39 формула (x ∈ Q) → (((x ∈ P) ≡ (x ∈ Q)) ∨ (¬(x ∈ P) → (x ∈ A))) тождественно истинна
17.02.2022 ЕГЭ Задание 15 Администратор Комментарии: 0
На числовой прямой даны два отрезка: P = [69; 91] и Q = [77; 114]. Укажите наименьшую возможную длину такого отрезка A, для которого формула (x ∈ Q) → (((x ∈ P) ≡ (x ∈ Q)) ∨ (¬(x ∈ P) → (x ∈ A))) тождественно истинна (т. е. принимает значение 1 при любом значении переменной …
Е15.38 выражение ((x & 26 ≠ 0) ∨ (x & 13 ≠ 0)) → ((x & 29 = 0) → (x & A ≠ 0)) тождественно истинно
25.01.2022 ЕГЭ Задание 15 Администратор Комментарии: 0
Обозначим через m&n поразрядную конъюнкцию неотрицательных целых чисел m и n. Так, например, 14&5 = 11102&01012 = 01002 = 4 . Определите наименьшее натуральное число A, такое что выражение ( (x & 26 ≠ 0) ∨ (x & 13 ≠ 0)) → ((x & 29 = 0) → (x & A ≠ 0)) тождественно истинно …
Решение 15 задания ЕГЭ по информатике про основные законы Алгебры Логики
![]()
15-е задание: «Основные законы алгебры логики»
Уровень сложности — повышенный,
Требуется использование специализированного программного обеспечения — нет,
Максимальный балл — 1,
Примерное время выполнения — 5 минут.
Проверяемые элементы содержания: Знание основных понятий и законов математической логики
До ЕГЭ 2021 года — это было задание № 18 ЕГЭ
Типичные ошибки и рекомендации по их предотвращению:
«Важно понимать, что выражение должно быть тождественно истинно, т.е. истинно при любых допустимых значениях переменных x и у, а не только при некоторых наборах значений»
ФГБНУ «Федеральный институт педагогических измерений»
Элементы математической логики
-
Для решения 15 задания, потребуется знание таблиц истинности.
Для выполнения задания рекомендуется повторить следующие темы:
Преобразование логических операций:
A → B = ¬ A ∨ B
или
A → B = A + B
A ↔ B = A ⊕ B = A ∧ B ∨ A ∧ B
или
A ↔ B = A ⊕ B = A · B + A · B
A ⊕ B = (¬A ∧ B) ∨ (A ∧ ¬B)
или
A ⊕ B = ( A · B) + (A · B )
Законы алгебры логики:
A ∧ ¬ A = 0 или A · A = 0
A ∨ ¬ A = 1 или A + A = 1
A ∧ A = A или A · A = A
A ∨ A = A или A + A = A
A ∧ 0 = 0
A ∧ 1 = A
A ∨ 0 = A
A ∨ 1 = 1
A ∧ B = B ∧ A
A ∨ B = B ∨ A
(A ∧ B) ∧ C = A ∧ (B ∧ C)
(A ∨ B) ∨ С = A ∨ (B ∨ С)
(A ∧ B) ∨ C = (A ∨ C) ∧ (B ∨ C)
(A ∨ B) ∧ С = (A ∧ С) ∨ (B ∧ С)
и наоборот:
(A ∨ B) ∧ (A ∨ C) = A ∨ (B ∧ C)
(A ∧ B) ∨ (A ∧ C) = A ∧ (B ∨ C)
¬ (A ∧ B) = ¬ A ∨ ¬ B
¬ (A ∨ B) = ¬ A ∧ ¬ B
(A ∧ B) ∨(¬A ∧ B) = B
(A ∨ B) ∧(¬A ∨ B) = B
A ∨ A ∧ B = A
A ∧ (A ∨ B) = A
A ∨ ¬A ∧ B = A ∨ B
¬A ∨ A ∧ B = ¬A ∨ B
A ∧ (¬A ∨ B) = A ∧ B
¬A ∧ (A ∨ B) = ¬A ∧ B
- выражения в скобках,
- операции «НЕ»,
- операции «И»,
- операции «ИЛИ»,
- операции «импликация»
- операции «эквиваленция»
A → B → C → D = ((A → B) → C) → D
Математическая логика и теория множеств
- пересечение множеств соответствует логическому умножению, а объединение – логическому сложению;
- пересечением двух множеств называется новое множество, состоящее из элементов, принадлежащих одновременно обеим множествам:
Пример: 

Пример:

X ∨ U = U и X ∧ U = X
Пример разности множеств: 

Для большей определенности стоит рассмотреть тему круги Эйлера
Задания с отрезками и ДЕЛ
Для решения заданий необходимо знать рассмотренную тему о множествах.
Для упрощения решений можно пользоваться следующими законами.
1. Если в задании формула тождественно истинна (равна 1), и
2. после упрощения A без отрицания
то используется закон:
где B — известная часть выражения.
1. Если в задании формула тождественно истинна (равна 1), и
2. после упрощения A с отрицанием
то используется закон:
где B — известная часть выражения.
1. Если в задании формула тождественно ложна (равна 0), и
2. после упрощения A без отрицания
то используется закон:
где B — известная часть выражения.
1. Если в задании формула тождественно ложна (равна 0), и
2. после упрощения A с отрицанием
то используется закон:
Задания с поразрядной конъюнкцией
В задании 15 ЕГЭ встречаются задачи, связанные с поразрядной конъюнкцией.
Например:
5 & 26
означает поразрядную конъюнкцию (логическое «И») между двоичными значениями двух чисел — 5 и 26. Выполняется так:
5 = 1012 26 = 110102 0 = 000002
Задания, связанные с поразрядной конъюнкцией, решаются несколькими способами. Рассмотрим один из них.
(x & K = 0) как Zk
свойство 1:
Zk * Zm = Zk or m
(X & 5 = 0) ∧ (X & 26 = 0)
Z5 ∧ Z26
Z5 ∧ Z26 = Z26 or 5 помним, что дизъюнкция - это операция логическое "ИЛИ" (сложение) 5 = 1012 26 = 110102 31 = 111112
Z5 ∧ Z26 = Z31
свойство 2:
Zk + Zm = Zk and m
(X & 28 = 0) ∨ (X & 22 = 0)
Z28 ∨ Z22
Z28 ∨ Z22 = Z28 and 22 помним, что конъюнкция - это операция логическое "И" (умножение) 28 = 111002 22 = 101102 101002 = 2010
Z28 ∨ Z22 = Z20
свойство 3:
Условие Zk → Zm истинно для любых натуральных значений x тогда и только тогда, когда все единичные биты двоичной записи числа M входят во множество единичных битов двоичной записи числа K.
- На деле, это означает, что если имеем:
X & 29 = 0 → X & 5 = 0 Истинно или Ложно?
Z29 → Z5
Z29 → Z5 = 1 (истине), тогда, когда: 29 = 111012 5 = 1012 единичные биты двоичного числа 5 входят в единичные биты двоичного числа 29 (совпадают с ними)
Z29 → Z5 = 1 (истинно)
свойство 4:
(x & 125 = 5) то же самое, что и
Z120 * ¬Z4 * ¬Z1 = 1 (истине)
- Так, например, если в задании имеем:
X & 130 = 3
X & 130 = 3 то же самое, что и Z127 * ¬Z2 * ¬Z1 т.е. 3 = 2 + 1 : 2 = 10 1 = 01 3 = 11
Решение заданий 15 ЕГЭ по информатике

Плейлист видеоразборов задания на YouTube:
Задания с множествами
15_16:
№ 95
Элементами множества А являются натуральные числа. Известно, что выражение
((x ∈ ) → ¬(x ∈ )) ∨ (x ∈ A)
истинно (т. е. принимает значение 1) при любом значении переменной х .
Определите наименьшее возможное значение суммы элементов множества A .
-
✎ Решение аналитическое:
P ≡ (x ∈ ) ; Q ≡ (x ∈ ) ; A ≡ (x ∈ A).
(P → ¬Q) ∨ A = 1 Избавимся от импликации: ¬P ∨ ¬Q ∨ A = 1
¬P ∨ ¬Q ∨ А = 1 0 1
¬P ∨ ¬Q = 0, или ¬P = 0 отсюда P = 1 ¬Q = 0 отсюда Q = 1
3 + 9 = 12
✎ Решение программированием:
PascalAbc.net:
1 2 3 4 5 6 7 8 9 10 11
begin var s1 := hset(1, 3, 5, 7, 9, 11); var s2 := hset(3, 6, 9, 12); var a:=new List; for var x := 1 to 100 do begin if (x in s1 = not (x in s2)) = false then // если ложь, то x∈A - истина a.Add(x) end; a.Sum.Print; end.
begin var s1 := hset(1, 3, 5, 7, 9, 11); var s2 := hset(3, 6, 9, 12); var a:=new List; for var x := 1 to 100 do begin if (x in s1
Ответ: 12
Видеорешение на RuTube здесь
15_17:
Элементами множества А являются натуральные числа. Известно, что выражение
(x ∈ ) → (((x ∈ ) ∧ ¬(x ∈ A)) → → ¬(x ∈ ))
истинно (т. е. принимает значение 1) при любом значении переменной х .
Определите наименьшее возможное значение суммы элементов множества A .
-
✎ Теоретическое решение:
P≡(x ∈ ) ; Q ≡ (x ∈ ) ; A ≡ (x ∈ A).
P → ((Q ∧ ¬A) → ¬P) = P → (¬(Q ∧ ¬А) ∨ ¬P) = ¬P ∨ (¬(Q ∧ ¬А) ∨ ¬P) = ¬P ∨ ¬Q ∨ А.
¬P ∨ ¬Q ∨ А = 1 0 1
¬P ∨ ¬Q = 0, или ¬P = 0 отсюда P = 1 ¬Q = 0 отсюда Q = 1
6 + 12 = 18
Ответ: 18
15_18: Закон распределения
Элементами множеств А , P , Q являются натуральные числа, причём P = , Q = . Известно, что выражение
( (x ∈ A) → (x ∈ P) ) ∧ ( (x ∈ Q) → ¬(x ∈ A) )
истинно (т. е. принимает значение 1) при любом значении переменной х .
Определите наибольшее возможное количество элементов в множестве A .
-
✎ Теоретическое решение:
P ≡ (x ∈ P); Q ≡ (x ∈ Q); A ≡ (x ∈ A).
Избавимся от импликации: (¬A ∨ P) ∧ (¬Q ∨ ¬A) = 1 Применим распределительный закон (но можно вывести самостоятельно): ¬A ∨ (P ∧ ¬Q) = 1
¬A ∨ (P ∧ ¬Q) = 1 0 1
P ∧ ¬Q = 1, или P = 1 и ¬Q = 1 отсюда Q = 0
Ответ: 7
15_20: Закон поглощения
№ 100
Элементами множества А являются натуральные числа. Известно, что выражение
¬(x ∈ A) →¬(x ∈ ) ∨ (¬(x ∈ ) ∧ (x ∈ ))
истинно (т. е. принимает значение 1) при любом значении переменной х .
Определите наименьшее возможное количество элементов множества A.
-
✎ Теоретическое решение:
P ≡ (x ∈ ); Q ≡ (x ∈ ); A ≡ (x ∈ A).
Избавимся от импликации: A ∨ ¬P ∨ (¬Q ∧ P) = 1 Применим закон поглощения (но можно вывести самостоятельно): A ∨ ¬P ∨ ¬Q = 1
A ∨ ¬P ∨ ¬Q = 1 1 0
¬P ∨ ¬Q = 0, или P = 1 и Q = 1
Ответ: 1
Задания с отрезками на числовой прямой
Отрезки на числовой прямой:
15_3:
На числовой прямой даны два отрезка: P=[44,48] и Q=[23,35].
Укажите наибольшую возможную длину отрезка А, для которого формула
((x ϵ P) → (x ϵ Q)) ∧ (x ϵ A)
тождественно ложна, то есть принимает значение 0 при любом значении переменной x.
✍ Решение:
✎ Теоретическое решение (логическое):
-
Упростим формулу, избавившись от ‘x ϵ‘:
(P → Q) ∧ A
правило импликации: a → b = ¬a ∨ b
(¬P ∨ Q) ∧ A

(¬P ∨ Q) ∧ A = 0
(¬P ∨ Q) ∧ A 0 ∧ 0 = 0 0 ∧ 1 = 0 1 ∧ 0 = 0 1 ∧ 1 = 1
1. (¬P ∨ Q) = 1 ∨ 0 = 1 - на данном отрезке А должно равняться 0 2. (¬P ∨ Q) = 1 ∨ 1 = 1 - на данном отрезке А должно равняться 0 3. (¬P ∨ Q) = 1 ∨ 0 = 1 - на данном отрезке А должно равняться 0 4. (¬P ∨ Q) = 0 ∨ 0 = 0 - на данном отрезке А может! равняться 1 5. (¬P ∨ Q) = 1 ∨ 0 = 1 - на данном отрезке А должно равняться 0
48 - 44 = 4
Результат: 4
✎ Решение программированием
Важно: Этот способ подходит НЕ для всех заданий с отрезками!
1 2 3 4 5 6 7 8 9
def f(a1,a2,x): return((44x48)(23x35))and(a1xa2) maxim = 0 for a1 in range (1,200): for a2 in range (a1+1,200): if all(f(a1,a2,x)==0 for x in range (1,200)):# если все ложны if a2-a1>maxim: maxim=a2-a1 print(a1,a2, a2-a1) # сами точки отрезка и длина
44 45 1 44 46 2 44 47 3 44 48 4
PascalABC.net (классическое решение):
1 2 3 4 5 6 7 8 9 10 11 12 13
begin var s1:=44..48; var s2:=23..35; var a:=new List; for var x:=1 to 1000 do begin var p:=x in s1; var q:=x in s2; if not (p=q) = true then a.Add(x); end; a.count.print end.
begin var s1:=44..48; var s2:=23..35; var a:=new List; for var x:=1 to 1000 do begin var p:=x in s1; var q:=x in s2; if not (p<=q) = true then a.Add(x); end; a.count.print end.
С подробным аналитическим решением задания 15 ЕГЭ по информатике можно ознакомиться по видео:
YouTube здесь
Видеорешение на RuTube здесь
Отрезки на числовой прямой:
15_9:
На числовой прямой даны два отрезка: P = [10,20] и Q = [30,40].
Укажите наибольшую возможную длину отрезка A, для которого формула
((x ∈ P) → (x ∈ Q)) → ¬(x ∈ A)
тождественно истинна, то есть принимает значение 1 при любом значении переменной x.
✍ Решение:
✎ Теоретическое решение (логическое):
-
Упростим выражение, введя обозначения:
A: x ∈ A P: x ∈ P Q: x ∈ Q
(P → Q) → ¬A = 1
(P → Q) → ¬A = 1 => ¬(P → Q) ∨ ¬A = 1 => ¬(¬P ∨ Q) ∨ ¬A = 1
¬(¬P ∨ Q) ∨ ¬A = 1 => P ∧ ¬Q ∨ ¬A = 1
А = 1 P = 1 ¬Q = 1 или Q = 0

Результат: 10
✎ Решение программированием
Важно: Этот способ подходит НЕ для всех заданий с отрезками!
PascalABC.net (классическое решение):
1 2 3 4 5 6 7 8 9 10 11 12 13
## var s1:=10..20; var s2:=30..40; var a:=new List; for var x:=1 to 1000 do begin var p:=x in s1; var q:=x in s2; if not(p=q) = true then a.Add(x); end; a.Println; print(a.Count-1) // так как требуется длина отрезка
10 11 12 13 14 15 16 17 18 19 20 10
Результат: 10
Отрезки на числовой прямой:
15_10:
На числовой прямой даны два отрезка: P = [3, 20] и Q = [6, 12].
Укажите наибольшую возможную длину отрезка A, для которого формула
((x ∈ P) ~ (x ∈ Q)) → ¬(x ∈ A)
тождественно истинна, то есть принимает значение 1 при любом значении переменной x.
✍ Решение:
✎ Теоретическое решение (логическое):
-
Упростим выражение, введя обозначения:
A: x ∈ A P: x ∈ P Q: x ∈ Q
(P ~ Q) → ¬A = 1
(P ~ Q) → ¬A = 1 => ¬(P ~ Q) ∨ ¬A = 1
Далее возможно 2 способа решения.
(a ~ b) = a * b + ¬a * ¬b
¬(P ~ Q) = ¬((P ∧ Q) ∨ (¬P ∧ ¬Q)) = = ¬(P ∧ Q) ∧ ¬(¬P ∧ ¬Q)
¬(P ∧ Q) ∧ ¬(¬P ∧ ¬Q) = = ¬(P ∧ Q) ∧ (P ∨ Q)
¬(P ∧ Q) ∧ (P ∨ Q) ∨ ¬A = 1
¬(P ∧ Q) ∧ (P ∨ Q) = 1 А = 1

✎ 2 способ:
После того, как мы избавились от импликации, имеем:
¬(P ~ Q) ∨ ¬A = 1
Результат: 8
С решением задания 15 вы также можете ознакомиться, посмотрев видео (аналитическое решение):
YouTube здесь
Видеорешение на RuTube здесь
Отрезки на числовой прямой:
15_11:
На числовой прямой даны два отрезка: P = [11, 21] и Q = [15, 40].
Укажите наибольшую возможную длину отрезка A, для которого формула
(x ∈ A) → ¬((x ∈ P) ~ (x ∈ Q))
тождественно истинна, то есть принимает значение 1 при любом значении переменной x.
✍ Решение:
✎ Теоретическое решение (логическое):
-
Упростим выражение, введя обозначения:
A: x ∈ A P: x ∈ P Q: x ∈ Q
A → ¬(P ~ Q) = 1
A → ¬(P ~ Q) = 1 => ¬A ∨ ¬(P ~ Q) = 1

Результат: 19
Задания с ДЕЛ
Поиск наибольшего А, известная часть Дел ∨ Дел = 1
15_7:
Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m».
Для какого наибольшего натурального числа А формула
(ДЕЛ(x, 40) ∨ ДЕЛ(x, 64)) → ДЕЛ(x, A)
тождественно истинна (то есть принимает значение 1 при любом натуральном значении переменной х)?
✍ Решение:
✎ Теоретическое решение (логическое):
✎ Способ 1:
A = ДЕЛ(x,A); D40 = ДЕЛ(x, 40); D64 = ДЕЛ(x, 64)
(D40 ∨ D64) → A = 1
¬(D40 ∨ D64) ∨ A = 1 или (¬D40 ∧ ¬D64) ∨ A = 1
(¬D40 ∧ ¬D64) ∨ A = 1 1 2
¬D40 ∧ ¬D64 = 0 или ¬(¬D40 ∧ ¬D64) = 1 Преобразуем по закону Де Моргана и получим: D40 ∨ D64 = 1
Далее можно решать задание либо с помощью кругов Эйлера, либо с помощью логических рассуждений.
x/A :x/40 ∨x/64
x = 40, 64, 80, 120, 128, 160, 192, 200, .
А = 1, 2, 4, 8
НОД (40,64) = 8 40,64 (64 - 40 = 24) 40,24 (40 - 24 = 16) 24,16 (24 - 16 = 8) 16,8 (16 - 8 = 8) 8,8
✎ Теоретическое решение с помощью кругов Эйлера:
64 / 40 = 1 (24 остаток) 40 / 24 = 1 (16 остаток) 24 / 16 = 1 (8 остаток) 16 / 8 = 2 (0 остаток) - НОД = 8 +++ 40 / 8 = 5 64 / 8 = 8

Результат: 8
✎ Решение программированием:
Python:
1 2 3 4 5 6
for A in range(1,500): OK = 1 for x in range(1,1000): OK *= ((x % 40 == 0) or (x % 64 == 0))(x % A== 0) if OK: print( A )
for A in range(1,500): OK = 1 for x in range(1,1000): OK *= ((x % 40 == 0) or (x % 64 == 0))<=(x % A== 0) if OK: print( A )
1 2 4 8
## function f(a,x:integer):= (x.Divs(40) or (x.Divs(64)) = x.Divs(a))?true:false; (1..500).Where(a->(1..1000).All(x->f(a,x))).print;
1 2 4 8
PascalABC.net (классическое решение):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
begin for var A := 1 to 500 do begin var ok := 1; for var x := 1 to 1000 do begin if (((x mod 40 = 0) or (x mod 64 = 0)) = (x mod A = 0)) = false then begin ok := 0; break; end; end; if (ok = 1) then print(A) end; end.
begin for var A := 1 to 500 do begin var ok := 1; for var x := 1 to 1000 do begin if (((x mod 40 = 0) or (x mod 64 = 0))
1 2 4 8
Результат: 8
Поиск наименьшего А, известная часть Дел ∧ ¬Дел = 1
15_5:
Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m».
Для какого наименьшего натурального числа А формула
ДЕЛ(x, A) → (¬ДЕЛ(x, 28) ∨ ДЕЛ(x, 42))
тождественно истинна (то есть принимает значение 1 при любом натуральном значении переменной х)?
✍ Решение:
✎ Теоретическое решение (логическое):
ДЕЛ(x, A) → (¬ДЕЛ(x, 28) ∨ ДЕЛ(x, 42)) = 1
A = ДЕЛ(x,A); D28 = ДЕЛ(x, 28); D42 = ДЕЛ(x, 42)
A → (¬D28 ∨ D42) = 1
Избавимся от импликации:
¬A ∨ (¬D28 ∨ D42) = 1
¬A ∨ (¬D28 ∨ D42) = 1 1 2
(¬D28 ∨ D42) = 0 один случай: когда ¬D28 = 0 и D42 = 0
x/¬A :x/28 ∧x/¬42
x = 28, 56,84, 112, 140,168, 196, 224, .
А = 1, 2, 3
✎ Решение программированием. Язык Python, Pascal:
-
Из общего выражения:
ДЕЛ(x, A) → (¬ДЕЛ(x, 28) ∨ ДЕЛ(x, 42)) = 1
for A in range(1,50): OK = 1 for x in range(1,1000): OK *= (x % A == 0) ((x % 28 != 0) or (x % 42== 0)) if OK: print( A ) break
for A in range(1,50): OK = 1 for x in range(1,1000): OK *= (x % A == 0)
## function f(a,x:integer):= x.Divs(a) = ((not x.Divs(28)) or (x.Divs(42)))?true:false; (1..500).Where(a->(1..1000).All(x->f(a,x))).take(1).print;
PascalABC.net (классическое решение):
begin for var A := 1 to 50 do begin var ok := 1; for var x := 1 to 1000 do begin if (x mod A = 0) = ((x mod 28 <> 0)or (x mod 42 = 0)) = false then begin ok := 0; break; end; end; if (ok = 1) then begin print(A); break; end end; end.
begin for var A := 1 to 50 do begin var ok := 1; for var x := 1 to 1000 do begin if (x mod A = 0) 0)or (x mod 42 = 0)) = false then begin ok := 0; break; end; end; if (ok = 1) then begin print(A); break; end end; end.
OK — переменная-индикатор: если находится такое А при котором, диапазон всех значений x , подставленных в выражение, возвращает истинное значение выражения, то ОК остается равным 1, т.к. используется операция умножения (до цикла ОК необходимо присвоить единице).
Следует иметь в виду, что в программировании вместо операции импликация ( -> ) можно использовать нестрогое неравенство: . Т.к. таблица истинности для операции импликация соответствует операции
a b F(a<=b) 0 0 1 0 1 1 1 0 0 1 1 1
Результат: 3
15_6:
Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m».
Для какого наименьшего натурального числа А формула
(¬ДЕЛ(x, 19) ∨ ¬ДЕЛ(x, 15)) → ¬ДЕЛ(x, A)
тождественно истинна (то есть принимает значение 1 при любом натуральном значении переменной х)?
✍ Решение:
✎ Теоретическое решение (логическое):
A = ДЕЛ(x,A); D19 = ДЕЛ(x, 19); D15 = ДЕЛ(x, 15)
(¬D19 ∨ ¬D15) → ¬A = 1
D19 ∧ D15 ∨ ¬A = 1
¬A ∨ D19 ∧ D15 = 1 1 2
¬A ∨ D19 ∧ D15 = 1 0 ∨ 1 = 1
¬A = 0 при D19 ∧ D15 = 1 или A = 1 при D19 = 1 и D15 = 1
A = 1 D19 = 1 D15 = 1
19 * 2 = 38 (38 не делится на 15) 19 * 3 = 57 (57 не делится на 15) 19 * 4 = 76 (76 не делится на 15) 19 * 5 = 95 (95 не делится на 15) . 19 * 10 = 190 (190 не делится на 15) 19 * 15 = 285 (285 делится на 15)
x = 1, 2, 3.15, 16, 17, 18,19, 20, 21, 22, 23, .30, .
А =1,2,3, . 285
✎ Решение программированием:
-
Из общего выражения:
(¬ДЕЛ(x, 19) ∨ ¬ДЕЛ(x, 15)) → ¬ДЕЛ(x, A) = 1
for A in range(1,500): OK = 1 for x in range(1,1000): OK *= ((x % 19 != 0) or (x % 15 != 0)) (x % A!= 0) if OK: print( A )
for A in range(1,500): OK = 1 for x in range(1,1000): OK *= ((x % 19 != 0) or (x % 15 != 0))
OK - переменная-индикатор: если находится такое А при котором, диапазон всех значений x , подставленных в выражение, возвращает истинное значение выражения, то ОК остается равным 1, т.к. используется операция умножения (до цикла ОК необходимо присвоить единице).
Следует иметь в виду, что в программировании вместо операции импликация ( -> ) можно использовать нестрогое неравенство: . Т.к. таблица истинности для операции импликация соответствует операции
a b F(a<=b) 0 0 1 0 1 1 1 0 0 1 1 1
## function f(a,x:integer):= x.Divs(a) = ((not x.Divs(19)) or (not x.Divs(15))) = not x.Divs(a)?true:false; (1..500).Where(a->(1..1000).All(x->f(a,x))).take(1).print;
Результат: 285
Задания с поразрядной конъюнкцией
15_1:
Обозначим через m & n поразрядную конъюнкцию неотрицательных целых чисел m и n. Так, например, 12&6 = 11002&01102 = 01002 = 4
Для какого наименьшего неотрицательного целого числа A формула
(X & A = 0) ∧ ¬(X & 35 ≠ 0 → X & 52 ≠ 0)
тождественно ложна (то есть принимает значение 0 при любом неотрицательном значении переменной X)?
✍ Решение:
Стоит заметить, что для такого типа задач, нет универсального единственного решения. Поэтому на видео, расположенном ниже, представлено два варианта решения.
✎ Способ 1 (теоретическое решение):
Рассмотрим один из вариантов решения:
-
Удалим из формулы X&, чтобы сократить ее запись:
(A = 0) ∧ ¬(35 ≠ 0 → 52 ≠ 0)
(A = 0) ∧ ¬(35 ≠ 0 → 52 ≠ 0)
(A = 0) ∧ ¬(35 ≠ 0 → 52 ≠ 0) 1 2
правило импликации: a → b = ¬a ∨ b
(A = 0) ∧ ¬(35 = 0 ∨ 52 ≠ 0) т.к. в результате получается отрицание того, что 35 ≠ 0, то убираем знак "не равно": было 35 ≠ 0, стало 35 = 0
закон де Моргана: ¬ (A ∨ B) = ¬ A ∧ ¬ B
A = 0 ∧ 35 ≠ 0 ∧ 52 = 0 = 0
0 ∧ 0 = 0 0 ∧ 1 = 0 1 ∧ 0 = 0 1 ∧ 1 = 1
(A = 0) ∧ 35 ≠ 0 ∧ 52 = 0 = 0 0 ∧ 1 = 0
35 ≠ 0 ∧ 52 = 0 = истинно (=1) если: 35 ≠ 0 = истинно (=1) и 52 = 0 = истинно (=1) так как стоит логическое умножение ∧ - смотрим выше таблицу истинности для конъюнкции
35 ≠ 0 = 1 (истина) и 52 = 0 = 1 (истина) и A = 0 = 0 (ложь)
35: 100011 (≠ 0) 52: 110100 (= 0)
0 0 ? 0 ? ? & 1 ? ? ? 1 1 0 0 ? 0 1 1
0000112 = 310
Ответ: 3
✎ Способ 2* (теоретическое решение):
-
Используем метод А.В. Здвижковой.
- Произвести замену (x & K = 0) на Zk
- Выполнить преобразования по свойству импликации и закону Де Моргана.
- Стремиться прийти к выражению с конъюнкциями без отрицаний типа: Zk * Zm .
- Все выражения типа Zk * Zm преобразовать по свойству
Zk * Zm = Zk or m . - Путем преобразований прийти к импликации: Zk → Zm .
A ∧ ¬(¬Z35 → ¬Z52) = 0
¬(A ∧ ¬(¬Z35 → ¬Z52)) = 1
¬A ∨ (¬Z35 → ¬Z52) = 1
¬A ∨ (Z35 ∨ ¬Z52) = 1
¬A ∨ ¬Z52 ∨ Z35 = 1
¬(A ∧ Z52) ∨ Z35 = 1
(A ∧ Z52) → Z35 = 1
ZA ∨ 52 → Z35 = 1
Условие Zk → Zm истинно для любых натуральных значений x тогда и только тогда, когда все единичные биты двоичной записи числа M входят во множество единичных битов двоичной записи числа K.
A = ??0?11 52 = 110100 A or 52 = 110111 35 = 100011
Аmin = 112 = 310
✎ Решение программированием
PascalAbc.net (LINQ):
## function f(a,x:integer):= ((x and A)=0) and not(not(x and 35=0) = not(x and 52=0))?true:false; (1..2000).Where(a->(1..2000).All(x->f(a,x)=false)).print;
PascalAbc.net (классическое решение):
begin for var a:=1 to 1000 do begin var ok:=1; for var x:=1 to 1000 do begin var f1:=(x and a)=0; var f2:=(x and 35)=0; var f3:=(x and 52)=0; if f1 and not (not f2= not f3) = true then begin ok:=0;break; end; end; if ok = 1 then print(a) end; end.
begin for var a:=1 to 1000 do begin var ok:=1; for var x:=1 to 1000 do begin var f1:=(x and a)=0; var f2:=(x and 35)=0; var f3:=(x and 52)=0; if f1 and not (not f2
Результат: 3
Детальный разбор данного задания 15 ЕГЭ по информатике предлагаем посмотреть на видео:
Вариант решения №1 (универсальный, теоретический):
YouTube здесь
Видеорешение на RuTube здесь
Вариант решения №2 (не универсальный, но простой):
YouTube здесь
15_2:
Обозначим через m & n поразрядную конъюнкцию неотрицательных целых чисел m и n. Так, например, 12&6 = 11002&01102 = 01002 = 4
Для какого наибольшего неотрицательного целого числа A формула
X & A ≠ 0 → (X & 36 = 0 → X & 6 ≠ 0)
тождественно истинна (то есть принимает значение 1 при любом неотрицательном значении переменной X)?
✍ Решение:
-
✎ Способ 1 (теоретическое решение):
z36 = (x&36 = 0), z6 = (x&6 = 0), A = (x&A = 0)
¬A → (z36 → ¬ z6)
¬A → (z36 → ¬ z6) = A + ¬z36 + ¬z6
A + ¬z36 + ¬z6 = A + ¬(z36 * z6)
A + ¬(z36 * z6) = ¬(z36 * z6) + A = (z36 * z6) → A
z36 * z6 = z36 or 6
1001002 -> 36 1102 -> 6 100100 110 1001102 -> 36 or 6 = 3810
z38 → A
A = 1001102 = 3810
✎ Способ 2 (теоретическое решение):
x&A ≠ 0 → (x&36 = 0 → x&6 ≠ 0) = 1
A = (x&A = 0); P = (x&36 = 0); Q = (x&6 = 0);
¬A → (P → ¬Q) = 1
A ∨ (¬P ∨ ¬Q) = 1
A ∨ (¬P ∨ ¬Q) = 1; или 1 ∨ (0) = 1
¬P ∨ ¬Q = 0 Отсюда имеем: ¬P = 0 и ¬Q = 0 (дизъюнкция равна 0 в единственном случае, когда все операнды равны 0)
Q = 1 и P = 1
100100 : 36 000110 : 6 0**0** : маска P (x&36 = 0) ***00* : маска Q (x&6 = 0)
0**0** : маска P (x&36 = 0) ***00* : маска Q (x&6 = 0) 0**00* : общая маска x *00**0 : маска для A (x&A = 0) т.е. в тех битах А, где может получиться единица (звездочки в обеих масках),
мы поставили нули.
100110 = 3810
✎ Решение программированием
PascalAbc.net (LINQ):
## function f(a,x:integer):= not(x and A=0) =((x and 36=0) = not(x and 6=0))?true:false; (1..2000).Where(a->(1..2000).All(x->f(a,x))).print;
PascalAbc.net (классическое решение):
begin for var a:=1 to 1000 do begin var ok:=1; for var x:=1 to 1000 do begin var f1:=(x and a)<>0; var f2:=(x and 36)=0; var f3:=(x and 6)<>0; if f1 = (f2 = f3) = false then begin ok:=0;break; end; end; if ok = 1 then print(a) end; end.
begin for var a:=1 to 1000 do begin var ok:=1; for var x:=1 to 1000 do begin var f1:=(x and a)<>0; var f2:=(x and 36)=0; var f3:=(x and 6)<>0; if f1
Результат: 38
Подробное решение данного задания 15 ЕГЭ по информатике предлагаем посмотреть в видео уроке:
Способ 1:
YouTube здесь
Видеорешение на RuTube здесь
Способ 2:
YouTube здесь
Видеорешение на RuTube здесь
Поразрядная конъюнкция:
15_8:
№ 209
Определите наименьшее натуральное число А из интервала [43, 55], такое, что выражение
((x & 17 ≠ 0) → ((x & A ≠ 0) → (x & 58 ≠ 0))) → → ((x & 8 = 0) ∧ (x & A ≠ 0) ∧ (x & 58 = 0))
тождественно ложно (то есть принимает значение 0 при любом натуральном значении переменной х)?
✍ Решение:
✎ Решение теоретическим способом:
-
Кратко изложенное решение *:
(¬Z17 → (¬A → ¬Z58)) → (z8 ∧ ¬A ∧ Z58) = 0
¬(((¬Z17 → (¬A → ¬Z58)) → (z8 ∧ ¬A ∧ Z58)) = 1
Z8 ∧ Z58 = Z8 or 58 : 8 = 1000 or 58 = 111010 111010 = 58
Z8 ∧ Z58 = Z58
¬(¬(Z17 ∨ A ∨ ¬Z58) ∨ (¬A ∧ Z58)) = 1
(Z17 ∨ A ∨ ¬Z58) ∧ ¬(¬A ∧ Z58)) = 1
(Z17 ∨ A ∨ ¬Z58) ∧ (A ∨ ¬Z58) = 1
A ∨ ¬Z58 = 1
¬Z58 ∨ A => Z58 → A = 1
43 = 101011 - не подходит! 58 = 111010 44 = 101100 - не подходит! 58 = 111010 45 = 101101 - не подходит! 58 = 111010 46 = 101110 - не подходит! 58 = 111010 47 = 101111 - не подходит! 58 = 111010 48 = 110000 - подходит! 58 = 111010
Результат: 48
✎ Решение программированием:
PascalAbc.net (LINQ):
## function f(a,x:integer):= (not(x and 17=0) =(not(x and a=0) = not(x and 58=0))) = ((x and 8 = 0) and (not(x and a = 0)) and (x and 58=0))?true:false; (43..55).Where(a->(1..2000).All(x->f(a,x)=false)).print;
PascalAbc.net (классическое решение):
begin for var a:=43 to 55 do begin var ok:=1; for var x:=1 to 1000 do begin var f1:=x and 17<>0; var f2:=x and a<>0; var f3:=x and 58<>0; var f4:=x and 8 = 0; var f5:=x and a<>0; var f6:=x and 58=0; if f1 = (f2 = f3)=(f4 and f5 and f6) = true then begin ok:=0;break; end; end; if ok = 1 then print(a) end; end.
begin for var a:=43 to 55 do begin var ok:=1; for var x:=1 to 1000 do begin var f1:=x and 17<>0; var f2:=x and a<>0; var f3:=x and 58<>0; var f4:=x and 8 = 0; var f5:=x and a<>0; var f6:=x and 58=0; if f1
Результат: 48
15_15:
№ 173
Определите набольшее натуральное число A, такое что выражение
((x & 26 = 0) ∨ (x & 13 = 0)) → ((x & 78 ≠ 0) → (x & A = 0))
тождественно истинно (то есть принимает значение 1 при любом натуральном значении переменной х)?
✍ Решение:
✎ Решение теоретическим способом:
-
Для упрощения восприятия введем обозначения:
z26 = (x & 26 = 0) z13 = (x & 13 = 0) z78 = (x & 78 = 0) A = (x & A = 0)
(z26 ∨ z13) → (¬z78 → A) = 1
(z26 ∨ z13) → (z78 ∨ A) = 1
26 : 11010 единичные биты: 4, 3, 1 13 : 1101 единичные биты: 3, 2, 0 ∧ =------------------------ 01000 = 810
z8 → (z78 ∨ A) z78: не влияет на решение, так как операция дизъюнкция истинна тогда, когда хотя бы один операнд истинен z8 → A : .
Наибольшее А = 1000 = 810
Результат: 8
✎ Решение программированием:
PascalAbc.net (LINQ):
## function f(a,x:integer):= ((x and 26=0) or (x and 13=0)) = (not(x and 78=0) = (x and a=0))?true:false; (1..2000).Where(a->(1..2000).All(x->f(a,x))).print;
PascalAbc.net (классическое решение):
begin for var a:=1 to 1000 do begin var ok:=1; for var x:=1 to 1000 do begin var f1:=x and 26=0; var f2:=x and 13=0; var f3:=x and 78<>0; var f4:=x and a=0; if (f1 or f2) = (f3 = f4) = false then begin ok:=0;break; end; end; if ok = 1 then print(a) end; end.
begin for var a:=1 to 1000 do begin var ok:=1; for var x:=1 to 1000 do begin var f1:=x and 26=0; var f2:=x and 13=0; var f3:=x and 78<>0; var f4:=x and a=0; if (f1 or f2)
Результат: 8
Задания на поиск наибольшего или наименьшего числа А
Поиск наибольшего или наименьшего числа А:
15_4: 15 задание. Демоверсия ЕГЭ 2018 информатика:
![]()
Для какого наибольшего целого числа А формула
тождественно истинна, то есть принимает значение 1 при любых целых неотрицательных x и y?
✎ Способ 1 (программный):
Pascalabc.net (LINQ - решение запросом):
## function f(a,x,y:integer):= ((x=9)=(x*x=a)) and ((y*y=a) = (y =9))?true:false; (-1000..1000).Where(a->(0..1000).All(x->(0..1000).All(y->f(a,x,y)))).print;
Pascalabc.net (классическое решение методом перебора):
Важно: Поскольку используется метод полного перебора, то возможна ситуация, когда транслятор будет работать слишком медленно. Но работоспособность представленного алгоритма проверена на онлайн компиляторах.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
begin for var A := 200 downto -100 do begin var OK := 1; for var x := 0 to 100 do for var y := 0 to 100 do if ((x = 9) = (x * x = A)) and ((y * y = A) = (y = 9)) = false then begin OK := 0; break; end; if OK = 1 then begin print(A); break end; end; end.
begin for var A := 200 downto -100 do begin var OK := 1; for var x := 0 to 100 do for var y := 0 to 100 do if ((x
for A in range(200,-100,-1): OK = 1 for x in range(0,100): for y in range(0,100): OK *= ((x9) (x*xA)) and((y*yA) (y9)) if OK: print(A) break
for A in range(200,-100,-1): OK = 1 for x in range(0,100): for y in range(0,100): OK *= ((x<=9) <= (x*x<=A)) and((y*y<=A) <= (y<=9)) if OK: print(A) break
✎ Способ 2 (теоретическое решение):
-
Условно разделим исходное выражение на части:

(импликация 0 → 0 = 1)
y > 9 y2 > A при любых y
возьмем наименьшее возможное по условию натуральное: y = 10, тогда A < 100
Результат: 99
Подробное решение 15 задания демоверсии ЕГЭ 2018 года смотрите на видео (аналитическое решение):
YouTube здесь
Видеорешение на RuTube здесь
Поиск наибольшего или наименьшего числа А:
15_12: Досрочный егэ по информатике 2018, вариант 1:
Укажите наименьшее значение А, при котором выражение
(y + 3x < A) ∨ (x >20) ∨ (y > 40)
истинно для любых целых положительных значений x и y.
✍ Решение:
✎ Способ 1 (программный):
Pascalabc.net (LINQ - решение запросом):
## function f(a,x,y:integer):= (y+3*x) or (x>20) or (y >40)?true:false; (-1000..1000).Where(a->(1..1000).All(x->(1..1000).All(y->f(a,x,y)))).Take(1).print;
## function f(a,x,y:integer):= (y+3*x20) or (y >40)?true:false; (-1000..1000).Where(a->(1..1000).All(x->(1..1000).All(y->f(a,x,y)))).Take(1).print;
Pascalabc.net (классическое решение методом перебора):
Важно: Поскольку используется метод полного перебора, то возможна ситуация, когда транслятор будет работать слишком медленно. Но работоспособность представленного алгоритма проверена на онлайн компиляторах.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
begin for var A := -100 to 200 do begin var OK := 1; for var x := 1 to 100 do for var y := 1 to 100 do if ((y+3*x) or (x >20)or(y>40)) = false then begin OK := 0; break; end; if OK = 1 then begin print(A); break end; end; end.
begin for var A := -100 to 200 do begin var OK := 1; for var x := 1 to 100 do for var y := 1 to 100 do if ((y+3*x20)or(y>40)) = false then begin OK := 0; break; end; if OK = 1 then begin print(A); break end; end; end.
for A in range(-100,200): OK = 1 for x in range(1,100): for y in range(1,100): OK *= (y+3*xA) or (x > 20) or (y > 40) if OK: print(A) break
for A in range(-100,200): OK = 1 for x in range(1,100): for y in range(1,100): OK *= (y+3*x 20) or (y > 40) if OK: print(A) break
✎ Способ 2 (теоретическое решение):
-
Определим основные части выражения, выделив отдельно неизвестную часть - с А, и, так сказать, известную часть, то есть остальную.
1 2 (y+3x < A)∨ (x > 20) ∨ (y > 40)
(y+3x < A)∨ (x > 20) ∨ (y > 40) 1 или 0? 1 = 1 Не подходит!
1. (y+3x < A) = 1 2. (x >20) ∨ (y > 40) = 0
А > 3x + y A > 3*20 + 40 A > 100
✎ Данное задание также можно решить графическим способом
Выбрав произвольное значение A и представив А > 3x + y как прямую на плоскости.
Результат: 101
Подробное решение досрочного ЕГЭ 2018 года смотрите на видео (аналитическое решение):
YouTube здесь
Видеорешение на RuTube здесь
Поиск наибольшего или наименьшего числа А:
15_0: Разбор 15 задания. Демоверсия егэ по информатике 2019:
Для какого наибольшего целого неотрицательного числа А выражение
(48 ≠ y + 2x) ∨ (A ✎ Решение 1 (программный способ):
Pascalabc.net (LINQ - решение запросом):
## function f(a,x,y:integer):= (48 <> y+2*x) or (a) or (a)?true:false; (0..1000).Where(a->(0..1000).All(x->(0..1000).All(y->f(a,x,y)))).print;
Python (классическое решение методом перебора):
1 2 3 4 5 6 7 8
for A in range(200,0,-1): OK = 1 for x in range(0,100): for y in range(0,100): OK *= (48!=y+2*x) or(Ax)or (Ay) if OK: print(A) break
for A in range(200,0,-1): OK = 1 for x in range(0,100): for y in range(0,100): OK *= (48!=y+2*x) or(A ✎ Решение 2 (графический способ):
Разделим общее выражение на две части. Выделим неизвестную часть красным:
(48 ≠ y + 2x) ∨ (A < x) ∨ (A < y)
(48 ≠ y + 2x) ∨ (A < x) ∨ (A < y)= 1 0 1
y + 2x = 48 : при x = 0, y = 48 при y = 0, 2x = 48 => x = 24

Результат: 15
Видео решения 15 задания демоверсии ЕГЭ 2019 (аналитическое решение):
YouTube здесь
Видеорешение на RuTube здесь
Поиск наибольшего или наименьшего числа А:
15_19:
Для какого наименьшего целого числа А формула
(y + 5x 4) ∨ (y ✎ Способ 1 (программный):
Python:
1 2 3 4 5 6 7 8
for A in range(-100,100): OK = 1 for x in range(0,100): for y in range(0,100): OK *= (y+5*x34)((y-x >4)or(yA)) if OK: print( A ) break
for A in range(-100,100): OK = 1 for x in range(0,100): for y in range(0,100): OK *= (y+5*x<=34)<=((y-x >4)or(y<=A)) if OK: print( A ) break
Pascalabc.net (LINQ - решение запросом):
## function f(a,x,y:integer):= (y+5*x=34) =((y-x>4) or (y=a))?true:false; (0..1000).Where(a->(0..1000).All(x->(0..1000).All(y->f(a,x,y)))).take(1).print;
Pascalabc.net (классическое решение методом перебора):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
begin for var A := -100 to 100 do begin var OK := true; for var x := 0 to 100 do begin for var y := 0 to 100 do begin OK := (y + 5 * x = 34) = ((y - x > 4) or (y = A)); if OK = false then break; end; if OK = false then break; end; if OK then begin print(A); break; end; end; end.
begin for var A := -100 to 100 do begin var OK := true; for var x := 0 to 100 do begin for var y := 0 to 100 do begin OK := (y + 5 * x 4) or (y
Результат: 9
✎ Способ 2 (теоретическое решение):
¬(y + 5x 4) ∨ (y¬(y + 5x 4) ∨ (y = 1 1 часть 2 часть¬(y + 5x 4) ∨ (y = 1 1 часть = 0 2 часть = 1y + 5x > 34 = 0, значит: 1. y + 5x y - x > 4 = 0, значит: 2. y - xy A >= y
34 - 5x = 4 + x 30 = 6x x = 5 Найдем y: y = 4 + 5 = 9y = 9: A >= 9 => наименьшее A = 9Результат: 9
Поиск наибольшего или наименьшего числа А:
15_13:
№ 296
Укажите наименьшее целое значение А при котором выражение(2y + 5x 100) ∨ (3x – 2y > 70)
истинно для любых целых положительных значений x и y.
✍ Решение:
-
✎ Способ 1 (программный):
Python (классическое решение методом перебора):
1 2 3 4 5 6 7 8
for A in range(-200,200): OK = 1 for x in range(1,100): for y in range(1,100): OK *= (2*y + 5*x A) or (2*x + 4*y > 100) or (3*x - 2*y > 70) if OK: print( A ) break
for A in range(-200,200): OK = 1 for x in range(1,100): for y in range(1,100): OK *= (2*y + 5*x < A) or (2*x + 4*y >100) or (3*x - 2*y > 70) if OK: print( A ) break
Pascalabc.net (LINQ - решение запросом):
## function f(a,x,y:integer):= (2*y+5*x) or (2*x+4*y>100) or (3*x-2*y>70)?true:false; (-1000..1000).Where(a->(1..1000).All(x->(1..1000).All(y->f(a,x,y)))).take(1).print;
## function f(a,x,y:integer):= (2*y+5*x100) or (3*x-2*y>70)?true:false; (-1000..1000).Where(a->(1..1000).All(x->(1..1000).All(y->f(a,x,y)))).take(1).print;
PascalABC.NET (классическое решение методом перебора):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
begin for var A := -200 to 200 do begin var OK := true; for var x := 1 to 100 do begin for var y := 1 to 100 do begin OK := (2*y + 5*x < A) or (2*x + 4*y > 100) or (3*x - 2*y > 70); if OK = false then break; end; if OK = false then break; end; if OK then begin print(A); break; end; end; end.
begin for var A := -200 to 200 do begin var OK := true; for var x := 1 to 100 do begin for var y := 1 to 100 do begin OK := (2*y + 5*x < A) or (2*x + 4*y >100) or (3*x - 2*y > 70); if OK = false then break; end; if OK = false then break; end; if OK then begin print(A); break; end; end; end.
✎ Способ 2 (графический): представлен в видеоразборе ниже.
Результат: 171
Видео разбора задания смотрите на видео (аналитическое решение):
YouTube здесь
Видеорешение на RuTube здесь
Поиск наибольшего или наименьшего числа А:
15_14:
№ 303
Укажите наибольшее целое значение А при котором выражение
(3y – x > A) ∨ (2x + 3y ✎ Способ 1 (графическое решение):
(3y – x > A) ∨ (2x + 3y < 30) ∨ (2y – x < –31)= 1
(1) (2x + 3y) >= 30, y >= (30 - 2x) / 3 x = (30 - 3y) /2
(2) (2y – x >=–31) y >= (x - 31) / 2 x = 2y + 31
(1) x | y 0 | 10 15| 0
(2) x | y 0 | -15 ( целые) 30|0




если y = 1, то x = 2*1 + 31 = 33
✎ Способ 2 (программный):
Pascalabc.net (LINQ - решение запросом):
## function f(a,x,y:integer):= (3*y-x>a) or (2*x+3*y30) or (2*y-x-31)?true:false; (-100..1000).Where(a->(1..1000).All(x->(1..1000).All(y->f(a,x,y)))).print;
Python (классическое решение методом перебора):
1 2 3 4 5 6 7 8
for A in range(200,-200,-1): OK = 1 for x in range(1,100): for y in range(1,100): OK *= (3*y-x>A) or (2*x+3*y30) or (2*y-x-31) if OK: print(A) break
for A in range(200,-200,-1): OK = 1 for x in range(1,100): for y in range(1,100): OK *= (3*y-x>A) or (2*x+3*y<30) or (2*y-x<-31) if OK: print(A) break
Результат: -31
Смотрите решение подобного задания:
YouTube здесь
Видеорешение на RuTube здесь
15_21:
Известно, что для некоторого отрезка А формула
((x ∈ A) → (x2 2тождественно истинна (то есть принимает значение 1 при всех вещественных значениях переменной x).
Какую наибольшую длину может иметь отрезок A?
-
✎ Способ 1 (теоретическое решение):
((x ∈ A) → (x2 ∧ ((x2 = 1
1) ((x ∈ A) → (x2 21) ((x ∉ A) ∨ (x2 2 > 16) ∨ (x ∈ A)) = 11) ((x ∉ A) ∨ (x2 = 1 true false1) x ∉ A, для x2 > 100 => x > 10, x < -10 =>x ∈ [-∞ ; -10), (10; ∞] То есть найден диапазон, в котором нет A.2) ((x2 > 16) ∨ (x ∈ A)) = 1 false true(x ∈ A), для x2 x = -4 => x ∈ [-4;4]10+10 = 20Ответ: 20
Смешанные выражения
15_22:
Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m».
Для какого наименьшего натурального числа А формула(ДЕЛ(x, 250) → ¬ ДЕЛ(x, 10)) ∨ (3x + 2A ≥ 1000)тождественно истинна, то есть принимает значение 1 при любом значении переменной х?
-
✎ Способ 1 (программный):
Pascalabc.net (LINQ - решение запросом):
## function f(a,x:integer):= (x.divs(250) = not(x.Divs(10))) or (3*x+2*a>=1000)?true:false; (-1000..1000).Where(a->(1..1000).All(x->f(a,x))).Take(1).print;
## function f(a,x:integer):= (x.divs(250) =1000)?true:false; (-1000..1000).Where(a->(1..1000).All(x->f(a,x))).Take(1).print;
Ответ: 125
ЕГЭ информатика: Python
В курсе изучается Python с нуля и полностью разбираются программные способы решения задач № 1, 2, 5, 8, 12, 13, 14, 15, 16, 17, 23 из ЕГЭ 2024.
Начальный уровень
Сертификат Stepik

2 198 учащихся
Чему вы научитесь
- Получите все необходимые знания по Python для успешной сдачи КЕГЭ 2024 по информатике
- Научитесь решать № 1, 2, 5, 8, 12, 13, 14, 15, 16, 17, 23 из КЕГЭ 2024
- Изучите условия, циклы, строки, работу с файлами, списки, множества, кортежи, функции и многое другое
- Овладеете базовыми алгоритмами в программировании
О курсе
Данный курс является второй ступенью полной подготовки к КЕГЭ 2024 по информатике.
✅ В курсе изучается вся необходимая теория по программированию на языке Python для ЕГЭ по информатике. Особенностью курса является изучение программирования на языке Python именно на задачах КЕГЭ. Курс будет полезен и тем, кто имеет опыт написания программ на Python, и тем, кто совсем не знаком с программированием.
✅ Приведены эффективные способы решения заданий ЕГЭ с помощью написания программы в Python. Разобраны все нюансы и хитрости решения задач ЕГЭ по информатике в Python.
✅ В курсе полностью разобраны программные способы решения задач № 1, 2, 5, 8, 12, 13, 14, 15, 16, 17, 23 ЕГЭ на языке программирования Python.
❗ После покупки курса вы можете начать его прохождение в любое время. Доступ к курсу останется у вас навсегда
Данный курс является частью курсов:
- Информатика ЕГЭ 2024. Путь к 100 баллам. № 1-23
- Информатика ЕГЭ 2024. Путь к 100 баллам. № 1-27
Для кого этот курс
Для тех, кто сдаёт ЕГЭ по информатике в 2024 году или в ближайшие года. Для всех желающих, кто интересуется программированием.
Начальные требования
Курс подходит для учеников с любым уровнем начальных знаний.
ЗаPython'ил ЕГЭ на сотку или почему Python поможет на ЕГЭ
Доброго времени суток каждому жителю Хабрвилля! Давненько я не писал статей! Пора это исправить!
В сегодняшней статье поговорим о насущной для многих выпускников школ теме - ЕГЭ. Да-да-да! Я знаю, что Хабр - это сообщество разработчиков, а не начинающих айтишников, но сейчас ребятам как никогда нужна поддержка именно сообщества. Ребят опять посадили на дистант. Пока не ясно на какой период, но уже сейчас можно сказать, что ЕГЭ по информатике будет на компьютерах и его можно зарешать при помощи языка Python.
Вот я и подумал, чтобы не получилось как в песне, стоит этим заняться. Я расскажу про все задачи первой части и их решения на примере демо варианта ЕГЭ за октябрь.
Всех желающих - приглашаю ниже!
Быстрый перевод из системы в систему
В Python есть интересные функции bin() , oct() и hex() . Работают данные функции очень просто:
bin(156) #Выводит '0b10011100' oct(156) #Выводит '0o234' hex(156) #Выводит '0x9c'

Как вы видите, выводится строка, где 0b - означает, что число далее в двоичной системе счисления, 0o - в восьмеричной, а 0x - в шестнадцатеричной. Но это стандартные системы, а есть и необычные.
Давайте посмотрим и на них:
n = int(input()) #Вводим целое число b = '' #Формируем пустую строку while n > 0: #Пока число не ноль b = str(n % 2) + b #Остатот от деления нужной системы (в нашем сл записываем слева n = n // 2 #Целочисленное деление print(b) #Вывод
Данная программа будет работать при переводе из десятичной системы счисления в любую до 9, так как у нас нет букв. Давайте добавим буквы:
n = int(input()) #Вводим целое число b = '' #Формируем пустую строку while n > 0: #Пока число не ноль if (n % 21) > 9: #Если остаток от деления больше 9. if n % 21 == 10: #. и равен 10. b = 'A' + b #. запишем слева A elif n % 21 == 11:#. и равен 11. b = 'B' + b#. запишем слева B ''' И так далее, пока не дойдём до системы счисления -1 (я переводил в 21-ную систему и шёл до 20) ''' elif n % 21 == 11: b = 'B' + b elif n % 21 == 12: b = 'C' + b elif n % 21 == 13: b = 'D' + b elif n % 21 == 14: b = 'E' + b elif n % 21 == 15: b = 'F' + b elif n % 21 == 16: b = 'G' + b elif n % 21 == 17: b = 'H' + b elif n % 21 == 18: b = 'I' + b elif n % 21 == 19: b = 'J' + b elif n % 21 == 20: b = 'K' + b else: #Иначе (остаток меньше 10) b = str(n % 21) + b #Остатот от деления записываем слева n = n // 21 #Целочисленное деление print(b) #Вывод
Способ объёмен, но понятен. Теперь давайте используем тот же функцию перевода из любой системы счисления в любую:
def convert_base(num, to_base=10, from_base=10): # Перевод в десятичную систему if isinstance(num, str): # Если число - строка, то . n = int(num, from_base) # . переводим его в нужную систему счисления else: # Если же ввели число, то . n = int(num) # . просто воспринять его как число # Перевод десятичной в 'to_base' систему alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" # Берём алфавит if n < to_base: # Если число меньше системы счисления в которую переводить. return alphabet[n] # . вернуть значения номера в алфавите (остаток от деления) else: # Иначе. return convert_base(n // to_base, to_base) + alphabet[n % to_base] # . рекурсивно обратиться к функии нахождения остатка
Вызвав функцию вывода print(convert_base(156, 16, 10)) мы переведём 156 из 10 в 16 систему счисления, а введя print(convert_base('23', 21, 4)) переведёт 23 из 4-ичной в 21-ичную систему (ответ: B).
Задача 2
Все задания беру из первого октябрьского варианта (он же вариант № 9325894) с сайта Решу.ЕГЭ.

Решение данной задачи совсем простое: банальный перебор.
print('y', 'x', 'z', 'F') #Напечатаем заголовки таблицы for y in range(2): #Берём все переменные и меняем их в циклах '0' и '1' for x in range(2): for z in range(2): for w in range(2): F = ((not x or y) == (not z or w)) or (x and w) #Записываем функцию print(x, y, z, F) #Выводим результат

Нам вывелась вся таблица истинности (1 = True, 0 = False). Но это не очень удобно. Обратите внимание, что в задании, функция равно 0, так и давайте подправим код:
print('y', 'x', 'z', 'F') #Напечатаем заголовки таблицы for y in range(2): #Берём все переменные и меняем их в циклах '0' и '1' for x in range(2): for z in range(2): for w in range(2): F = ((not x or y) == (not z or w)) or (x and w) #Записываем функцию if not F: print(x, y, z, F) #Выводим результат

Далее - простой анализ.
Задача 5

Данная задача легко решается простой последовательностью действий в интерпретационном режиме:

Задача 6

Перепечатали и получили ответ:
s = 0 k = 1 while s < 66: k += 3 s += k print(k)
Задача 12

В очередной раз, просто заменим слова на код:
a = '9' * 1000 while '999' in a or '888' in a: if '888' in a: a = a.replace('888', '9', 1) else: a = a.replace('999', '8', 1) print(a)
Задача 14

Компьютер железный, он всё посчитает:
a = 4 ** 2020 + 2 ** 2017 - 15 k = 0 while a > 0: if a % 2 == 1: k += 1 a = a // 2 print(k)
Задача 16

Опять же, просто дублируем программу в python:
def F(n): if n > 0: F(n // 4) print(n) F (n - 1) print(F(5))

Задача 17

Задача с файлом. Самое сложное - достать данные из файла. Но где наша не пропадала?!
with open("17.txt", "r") as f: #Открыли файл 17.txt для чтения text = f.read() #В переменную text запихнули строку целиком a = text.split("\n") #Разбили строку энтерами (\n - знак перехода на новую строку) k = 0 #Стандартно обнуляем количество m = -20001 #Так как у нас сумма 2-ух чисел и минимальное равно -10000, то минимум по условию равен -20000, поэтому. for i in range(len(a)): #Обходим все элементы массива if (int(a[i - 1]) % 3 == 0) or (int(a[i]) % 3 == 0): #Условное условие k += 1 #Счётчик if int(a[i - 1]) + int(a[i]) > m: #Нахождение минимума m = int(a[i - 1]) + int(a[i]) print(k, m) #Вывод
Немного пояснений. Функция with() открывает файл считывает данные при помощи функции read() и закрывает файл. В остальном - задача стандартна.
Задача 19, 20 и 21
Все три задачи - задачи на рекурсию. Задачи идентичны, а вопросы разные. Итак, первая задача:

Пишем рекурсивную функцию и цикл перебора S:
def f(x, y, p): #Рекурсивная функция if x + y >= 69 or p > 3: #Условия завершения игры return p == 3 return f(x + 1, y, p + 1) or f(x, y + 1, p + 1) or\ f(x * 2, y, p + 1) or f(x, y * 3, p + 1) #Варианты действий for s in range (1, 58 + 1): #Перебор S if f(10, s, 1): #Начали с 10 камней print(s) break
Немного пояснений. В рекурсивной функции существует 3 переменные x - число камней в первой куче, y - число камней во второй куче, p - позиция. Позиция рассчитывается по таблице:
