На числовой прямой даны два отрезка:
Какова наименьшая возможная длина
Введем обозначения:
Применив преобразование импликации, получаем:
Применив закон де Моргана и правило упрощения, получаем:
Логическое ИЛИ истинно, если истинно хоть какое-то из утверждений. Выражение ¬P истинно тогда, когда x∈(−∞,17)U(46,∞), а выражение ¬Q истинно тогда, когда x∈(–∞,22)U(57,∞). Следовательно,
Ответ: 24.
Приведём решение Константина Гайнуллина на языке Python.
a = []
for nach in range(100):
for kon in range(100):
fl = True
for x in range(100):
if not((not(nach<=x<=kon))<=(((17<=x<=46) and (22<=x<=57))<=(nach<=x<=kon))):
fl = False
break
if fl == True:
a += [kon-nach]
print(min(a))
Приведём решение Ивана Гладких на языке Python.
list = []
P = [i for i in range(17, 47)]
Q = [i for i in range(22, 58)]
for Amin in range(1, 100):
for Amax in range(Amin + 1, 100):
check = 1
A = [i for i in range(Amin, Amax)]
for x in range(-150, 100):
f = (not(x in A)) <= (((x in P) and (x in Q)) <= (x in A))
if not f:
check = 0
break
if check == 1:
m = Amax - Amin
list.append(m)
print(min(list)-1)
Приведём решение Ярослава Чипаренкова на языке Python.
P = list(range(17, 47))
Q = list(range(22, 58))
A = []
for x in range(0, 100):
if ((not (x in A)) <= (((x in P) and (x in Q)) <= (x in A))) == False:
A.append(x)
print(len(A)-1)
Примечание.
О длине отрезка написано в примечании к задаче 11119.
Приведём решение Сергея Донец на PascalABC.NET:
begin
var P := 17..46;var Q := 22..57;
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)<=(((x in P)and(x in Q))<=(x in A))
)).Min(A->A.Size).Print;
end.

