Задача к ЕГЭ по информатике на тему «отрезки» №12

На числовой прямой даны три промежутка:

P = [10;15]  , Q = [5;20]  и K = (15;25]

Каким может быть промежуток А чтобы формула

((x ∕∈ A) → (x ∈ P )) ≡ ((x ∈ Q) → (x ∈ K ))

тождественно ложна при любых значениях переменной x. В ответ запишите наибольшую возможную целую длину промежутка А.

Решение аналитикой

Для упрощения записи заменим (x ∈ A ) = A  , (x ∈ Q) = Q  , (x ∈ P) = P  и (x ∈ K) = K  .

(A-→ P ) ≡ (Q → K )

Первым шагом раскроем импликацию:

(A ∨P ) ≡ (Q-∨ K)

Обратим внимание, что между двумя частямы выражение стоит тождество, тогда, чтобы выражение всегда было ложно нам необходимо подобрать такой отрезок A, чтобы результат правой части всегда отличался от результата левой части. Обозначим на числовой прямой правую часть и определим в каких диапазонах она дает истину, а в каких ложь.

PIC

Значит для праой части эти результаты должны быть противоположны. Изобразим известную часть левой части и отметим, какие результаты должны быть в диапазонах.

PIC

Таким образом, чтобы исходное выражение всегда было ложно, необходимо, чтобы отрезок A  лежал строго в отрезке [5;15]  . Так как в задании необходимо найти наибольшую длину отрезка A  , то это и будет являться отрезком A  : A = [5;15]  . Его длина 15− 5 = 10  .

Решение программой

Решим задачу программой. Чтобы показать, что левая граница отрезка K = (15;25]  не включается в отрезок  K  , зададим его в программе как K = [15.2,25]  .

def inn(x, A):
    return A[0] <= x <= A[1]

def inn(x, A):
    return A[0] <= x <= A[1]

def f(x, A):
    P = [10, 15]
    Q = [5, 20]
    K = [15.2, 25]
    return (((not inn(x, A)) <= inn(x, P)) == ((inn(x, Q)) <= inn(x, K)))

borders = [0, 0]
maxim = 0
k = 5
for a in range(0, 80 * k):
    for b in range(a, 80 * k):
        A = [a / k, b / k]
        good = True
        for x in range(0, 100 * k):
            if f(x/k, A):
                good = False
                break
        if good:
            if A[1] - A[0] >= maxim:
                maxim = A[1] - A[0]
                borders = A.copy()
print(maxim)
print(borders)

Программа вывела длину 10.0  и границы отрезка [5.0,15.0]  , значит нам подходит отрезок [5,15]  .

Ответ: 10
Оцените статью
Я решу все!