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

На числовой прямой даны два отрезка: P = [23,47]  , Q = [13,108]  . Найдите наименьшую возможную длину отрезка     A  , при котором формула

(x ∈ Q ) → (¬(x ∈ P)∧ (x ∈ Q ) → (x ∈ A ))

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

Решение руками

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

(x ∕∈ Q)∨ ((x ∈ P) ∨(x ∕∈ Q )∨ (x ∈ A))

(x ∈ P)∨ (x∈∕Q )∨ (x ∈ A)

Дальше инвертируем известную часть, чтобы определить при каких x  исходное выражение будет ложно:

(x ∕∈ P) ∧(x ∈ Q )

Отсюда видно, что это выражение истинно (а исходное, соответственно, ложно), когда x  не принадлижит отрезку      P  и принадлежит отрезку Q  . На числовой прямой это область [13,23)∪ (47,108]  Тогда, чтобы исходное выражение всегда было истино необходимо «перекрыть» эту облость отрезком A  . Отсюда минимальный отрезок A = [13;108]  .

Длина этого отрезка: 108 − 13 = 95  . Это и будет ответом.

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

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


def f(x, A):
    P = [23, 47]
    Q = [13, 108]
    return (inn(x, Q) <= (((not inn(x, P)) and inn(x, Q)) <= inn(x, A)))


borders = [0, 0]
minim = 10000000
k = 5
for a in range(0, 120 * k):
    for b in range(a, 120 * k):
        A = [a / k, b / k]
        good = True
        for x in range(0, 130 * k):
            if not f(x/k, A):
                good = False
                break
        if good:
            if A[1] - A[0] <= minim:
                minim = A[1] - A[0]
                borders = A.copy()
print(minim)
print(borders)

Программа вывела длину 95.0  и границы отрезка [13.0;108.0]  , значит нам подходит отрезок [13,108]  .

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