Демовариант ЕГЭ по информатике 2022 года, задание 15

Демовариант ЕГЭ по информатике 2022 года, задание 15

Задача

На числовой прямой даны два отрезка: D = [17; 58] и C = [29; 80]. Укажите наименьшую возможную длину такого отрезка A, для которого логическое выражение 

\[(x \in D)\to ((\neg(x \in C)\wedge \neg(x \in A))\to \neg(x \in D))\]

истинно (т.е. принимает значение 1) при любом натуральном значении переменной х?

Решение (аналитическое)

Введем следующие обозначения:

\[(x \in A)=A\]

\[(x \in C)=C\]

\[(x \in D)=D\]

Перепишем выражение в введенных обозначениях:

\[D \to ((\neg C \wedge \neg A)\to \neg D)\]

Упростим выражение:

\[D \to ((\neg C \wedge \neg A)\to \neg D)= \neg D \vee (\neg (\neg C \wedge \neg A)\vee \neg D)=\]

Выражение должно быть тождественно истинно. Ключевым моментом в этой задаче является следующий факт:

ege 2021 15 2

Таким образом:

Для того, чтобы найти А необходимо инвертитовать 0. По закону Де-Моргана получим:

\[\neg(C \vee \neg D)= \neg C \wedge D\]

Отразим на числовой прямой промежутки, соответствующие полученному решению. Сначала ¬С:

ege 15 001

Теперь D:

ege 15 002

Теперь сопоставим их межу собой. Пересечение и будет являться отрезком А:

ege 15 003

Таким образом, А соответствует отрезок [17; 29], его длина - 12 (29 - 17 = 12).

Ответ: 12.

Решение (программа)

Дело обстоит в том, что мы имеем дело с множествами. Именно по этому нам необходимо написать программу именно используя это обстоятельство.

Перед тем, как приступить к написанию программы, необходимо упростить исходное логическое выражение:

\[D \to ((\neg C \wedge \neg A)\to \neg D)= \neg D \vee (\neg (\neg C \wedge \neg A)\vee \neg D)=\]

\[= \neg D \vee ((C \vee A)\vee \neg D)=A \vee C \vee \neg D\]

Выражение должно быть тождественно истинно. Ключевым моментом в этой задаче является следующий факт:

ege 2021 15 2

Таким образом:

Для того, чтобы найти А необходимо инвертитовать 0. По закону Де-Моргана получим:

\[\neg(C \vee \neg D)= \neg C \wedge D\]

Постараемся интерпретировать полученный результат. Элементы множества А это такие элементы, которые есть в множестве D:

i in D

и их нет в множестве C:

i not in C

Перейдем к программированию.

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

Создадим три множества - A, C и D:

A = set()
C = set()
D = set()

Добавим в множества C и D значения в соответствии с условием: 

for i in range(17,59):
    D.add(i)
for i in range(29,81):
    C.add(i)

Далее в цикле будем перебирать значения в диапазоне [1, 501]. Если эти значения буду соответствовать условию (есть в множестве D и их нет в множестве C), то будем добавлять их в множество А:

for i in range(1,501):
    if (i in D) and (i not in C):
        A.add(i)

В результате работы цикла будет сформировано множество А, которое соответствует решению - наименьший возможный отрезок. Остается вывести его длину.

print(len(A))

В целом программа будет иметь следующий вид:

A = set()
C = set()
D = set()
for i in range(17,59):
    D.add(i)
for i in range(29,81):
    C.add(i)
for i in range(1,501):
    if (i in D) and (i not in C):
        A.add(i)
print(len(A))

Ответ: 12. 

P.S.

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

Так же ситуация отличается тем, что мы проверяем, ложно ли логическое выражение. Если логическое выражение ложно, то выбранное значение x добавляем в множество А.

\[D \to ((\neg C \wedge \neg A)\to \neg D)=\neg D \vee (\neg (\neg C \wedge \neg A)\vee \neg D)\]

Теперь запишем это на языке программирования:

not((x not in D) or (not(x not in C and x not in A) or x not in D))

Полная программа выглядит следующим образом:

A = set()
C = set()
D = set()
for i in range(17,59):
    D.add(i)
for i in range(29,81):
    C.add(i)
for x in range(1,500):
    if not((x not in D) or (not(x not in C and x not in A) or x not in D)):
        A.add(x)
print(len(A))

Выберите соответствующий номер задания в демонстрационном варианте ЕГЭ 2022 года

Информация

Все изображения, размещенные на сайте, изготовлены автором самостоятельно, а также взяты в сети Интернет из тех изображений, которые находятся в свободном доступе. Поиск изображений осуществлялся посредством "Яндекс. Картинки".

Индекс цитирования

Проект при поддержке компании RU-CENTER Рейтинг@Mail.ru

Версия сайта для слабовидящих