Задания
Версия для печати и копирования в MS Word
Тип 15 № 34541
i

На чис­ло­вой пря­мой даны два от­рез­ка: Р  =  [3, 38] и Q  =  [21, 57]. Ка­ко­ва наи­боль­шая воз­мож­ная длина ин­тер­ва­ла A, что ло­ги­че­ское вы­ра­же­ние

((х ∈ Q) → (х ∈ Р)) → ¬(х ∈ A)

тож­де­ствен­но ис­тин­но, то есть при­ни­ма­ет зна­че­ние 1 при любом зна­че­нии пе­ре­мен­ной х.

Спрятать решение

Ре­ше­ние.

Вве­дем обо­зна­че­ния:

(x ∈А) ≡ A; (x ∈ P) ≡ P; (x ∈ Q) ≡ Q.

Пре­об­ра­зо­вав, по­лу­ча­ем:

(¬Q ∨ P) → ¬A = Q ∧ ¬P ∨ ¬A.

Ло­ги­че­ское ИЛИ ис­тин­но, если ис­тин­но хотя бы одно утвер­жде­ние. Ло­ги­че­ское И ис­тин­но, когда ис­тин­ны оба утвер­жде­ния. Усло­вию Q ∧ ¬P = 1 удо­вле­тво­ря­ет от­ре­зок (38; 57]. По­сколь­ку вы­ра­же­ние Q ∧ ¬P ∨ ¬A долж­но быть тож­де­ствен­но ис­тин­ным, вы­ра­же­ние ¬A долж­но быть ис­тин­но на лучах (−∞; 38] и (57; +∞). Зна­чит, наи­боль­шая воз­мож­ная длина ин­тер­ва­ла A равна 57 − 38  =  19.

 

Ответ: 19.

 

При­ме­ча­ние 1.

О длине от­рез­ка на­пи­са­но в при­ме­ча­нии к за­да­че 11119.

 

При­ме­ча­ние 2.

Предо­сте­ре­га­ем чи­та­те­лей от ре­ше­ния этой и по­доб­ных задач с по­мо­щью про­грамм, ре­а­ли­зу­ю­щих метод пе­ре­бо­ра. В про­грам­мах, ко­то­рые пред­ла­га­ют наши чи­та­те­ли, в ка­че­стве гра­ниц от­рез­ка ис­поль­зу­ют­ся целые числа, и длина от­рез­ка опре­де­ля­ет­ся как раз­ность между ними. Такие про­грам­мы будут да­вать не­вер­ный ре­зуль­тат, если ин­тер­вал А не яв­ля­ет­ся от­рез­ком, то есть одна или обе из его гра­ниц ему не при­над­ле­жат. В част­но­сти, в дан­ной за­да­че число 38 не долж­но при­над­ле­жать ин­тер­ва­лу А. Сле­до­ва­тель­но, про­грам­мой будет най­де­на левая гра­ни­ца, рав­ная 39, и пра­вая гра­ни­ца, рав­ная 57, в ре­зуль­та­те чего длина ин­тер­ва­ла А по­лу­чит­ся рав­ной 18. Од­на­ко в за­да­че рас­смат­ри­ва­ют­ся не целые, а ве­ще­ствен­ные числа, по­это­му длина ин­тер­ва­ла (38; 57] равна 19.

 

 

При­ведём ре­ше­ние Вик­то­рии Зи­бе­ро­вой на языке Python.

p = range(3, 39)

q = range(21, 58)

A = [int(i) for i in range(1, 58)]#после за­пус­ка пе­ре­би­ра­ем 4 зна­че­ния от наи­боль­ше­го к наи­мень­ше­му 57,38,и тд берем наи­мень­шее зна­че­ние ко­то­рое дало ре­зуль­тат и смот­рим длину мас­си­ва а

for x in range(100):

if not (((x in q)<=(x in p))<=(not(x in A))):

A = A[1:]

else:

print(len(A))

 

При­ведём ре­ше­ние Сер­гея Донец на PascalABC.NET:

begin

var P := 3..38; var Q := 21..57;

var setX:=|3,38,21,57|.SelectMany(x->|x-0.1,x,x+0.1|);

setX.Order.Combinations(2).Select(m->m[0]..m[1])

.Where(A->setX.All(x->((x in Q)<=(x in P))<=not (x in A)

)).Max(A->A.Size).Round.Print;

end.

Раздел кодификатора ФИПИ: 1.5.1 Вы­ска­зы­ва­ния, ло­ги­че­ские опе­ра­ции, кван­то­ры, ис­тин­ность вы­ска­зы­ва­ния