На числовой прямой даны два отрезка:
Введем обозначения:
(x ∈А) ≡ A; (x ∈ P) ≡ P; (x ∈ Q) ≡ Q.
Применив преобразование импликации, получаем:
Логическое ИЛИ истинно, если истинно хотя бы одно утверждение. Эти выражения должны быть истинны для
Ответ: 25.
Примечание.
О длине отрезка написано в примечании к задаче 11119.
Приведём решение Дмитрия Трошина на языке Python.
P=[i for i in range(30,46)]
Q=[i for i in range(40,56)]
a=[]
for Amin in range(100):
for Amax in range(Amin,100):
A=[i for i in range(Amin,Amax)]
z=1
for x in range(100):
if not(((not(x in A))<=(not(x in P))) and ((x in Q)<=(x in A))):
z=0
if z==1:
a.append(len(A))
print(min(a) - 1)
Приведём решение Сергея Донец на PascalABC.NET:
begin
var P := 30..45;var Q := 40..55;
var setX:=|P.First,P.Last,Q.First,Q.Last,-999,999|
.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 A)<=(not(x in P)))and((x in Q)<=(x in A))
)).Min(A->A.Size).round.Print;
end.

