Тип 15 № 78071 
Преобразование логических выражений. Числовые отрезки
i
На числовой прямой даны два отрезка: P = [215; 264] и Q = [221; 294]. Укажите наименьшую возможную длину такого отрезка A, для которого логическое выражение
¬((x ∈ P) → ((¬(x ∈ A) ∧ (x ∈ Q)) → ¬(x ∈ P)))
ложно (т. е. принимает значение 0) при любом значении переменной х.
Решение. Введем обозначения:
(x ∈А) ≡ A; (x ∈ P) ≡ P; (x ∈ Q) ≡ Q.
Применив преобразование импликации, получаем:
¬(P → ((¬ A ∧ Q)→¬ P) ⇔ ¬(¬P ∨ (¬(¬ A ∧ Q)∨ ¬P) ⇔ ¬(¬P ∨ A ∨ ¬Q) .
¬(¬P ∨ A ∨ ¬Q) = 0 ⇔ ¬P ∨ A ∨ ¬Q = 1 .
Логическое ИЛИ истинно, если истинно хотя бы одно утверждение. Условие ¬P
истинно на множестве (−∞, 215] ∪ [264, ∞).
Условие ¬Q
истинно на множестве (−∞, 221] ∪ [294, ∞).
Поскольку выражение ¬P ∨ A ∨ ¬Q должно быть тождественно истинным, выражение A должно быть истинным на множестве [221; 264]. Значит, наименьшая возможная длина интервала A равна 264 − 221 = 43.
Ответ: 43.
Приведём решение Сергея Донец на PascalABC.NET:
begin
var P := 215..264;var Q := 221..294;
var setX:=|P.First,P.Last,Q.First,Q.Last,-9999,9999|
.SelectMany(x->|x-0.1,x,x+0.1|);
setX.Order.Combinations(2).Select(m->m[0]..m[1])
.Where(A->setX.All(x->
not((x in P)<=((not(x in A)and(x in Q))<=not(x in P)))=false
)).Min(A->A.Size).Round.Print;
end.
Ответ: 43