Вариант 1
отрезкиНа числовой прямой даны два отрезка: P = [98; 139] и Q = [49; 112]. Укажите наименьшую возможную длину такого отрезка A, что логическое выражение (x ∈ P) → (((x ∈ Q) ∧ ¬(x ∈ A)) → ¬(x ∈ P)) истинно (т. е. принимает значение 1) при любом значении переменной x.
Разбор
Шаг 1. Упрощаем. Импликация a → b равна ¬a ∨ b. Раскрываем импликации и применяем законы де Моргана, чтобы выражение стало дизъюнкцией: ¬P ∨ ¬Q ∨ A: A должен покрывать P ∩ Q.
Шаг 2. На прямой. P = [98; 139], Q = [49; 112], их пересечение — [98; 112], объединение — [49; 139].
Шаг 3. Наименьшая длина A — 14.
Ответ: 14
Решение на Python.
P = (98, 139)
Q = (49, 112)
def ok(A):
for i in range(0, 161 * 4): # x с шагом 0.25 — концы отрезков целые
x = i / 4
p = P[0] <= x <= P[1]
q = Q[0] <= x <= Q[1]
a = A[0] <= x <= A[1]
if not ((not p) or (not ((q and not a) and p))):
return False
return True
print(min(a2 - a1 for a1 in range(0, 161) for a2 in range(a1, 161) if ok((a1, a2))))