Тип 15 № 73841 
Преобразование логических выражений. Числовые отрезки
i
На числовой прямой даны три отрезка: P = [153 697; 780 411], Q = [275 071; 904 082], R = [722 050; 984 086].
Укажите наименьшую возможную длину такого отрезка A, для которого логическое выражение
(¬(x ∈ A)) → (((x ∈ P) ≡ (x ∈ Q)) → ((x ∈ R) ≡ (x ∈ Q))).
истинно (т. е. принимает значение 1) при любом значении переменной x.
Решение. Введем обозначения:
(x ∈ А) ≡ A; (x ∈ P) ≡ P; (x ∈ Q) ≡ Q ;(x ∈ R) ≡ R.
Применив преобразование импликации, получаем:
¬A → ((P ≡ Q) →(R ≡ Q)) =A ∨ ((P ≡ Q) →(R ≡ Q)) .
Логическое ИЛИ истинно, если истинно хотя бы одно утверждение. Необходимо найти такой промежуток А, где выражение
((P ≡ Q) →(R ≡ Q)) ложно. Импликация ложно только в одном случае, когда первое высказывание истина. а второе высказывание ложно.
Выражение (P ≡ Q) истинно на множестве (−∞, 153 697] ∪ [275 071, 780 411] ∪ [ 904 082, +∞).
Выражение (R ≡ Q) ложно на множестве [275 071, 722 050] ∪ [ 904 082, 984 086].
Выражение ((P ≡ Q) →(R ≡ Q)) ложно на множестве [275 071, 722 050] ∪ [ 904 082, 984 086]. Следовательно, А должно быть истинно на этом промежутке. Тогда минимальная длинна А равна 984 086-275 071=709015.
Ответ: 709015.
Приведём решение Егора Чернецова на языке Python.
P=153697,780411;Q=275071,904082;R=722050,984086
def f(x):return ((P[0]<=x<=P[1])==(Q[0]<=x<=Q[1]))<=((R[0]<=x<=R[1])==(Q[0]<=x<=Q[1]))
bad=[x for x in range(P[0],R[1]+1) if not f(x)]
print(max(bad)-min(bad))
Ответ: 709015