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

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

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

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

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

Упростим выражение, раскрыв импликацию:

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

Найдем случаи, когда выражение ложно. Для этого сделаем отрицание известной части и посмотрим, где оно дает истину:

(x ∈ P )∧ (x ∈ Q)

Отсюда следует, что инверсия дает истину когда x принадлежит одновременно и P, и Q. То есть, в этих ситуациях исходное выражение ложно, значит нужно подобрать такой отрезок A , чтобы «перекрыть» эту часть. Это будет отрезок [18,32]  . Значит, наименьшая длина 32− 18 = 14  .

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

# функция, которая проверяет, принадлежит ли x отрезку
def F(start, end, x):
    if start <= x <= end:
        return True
    else:
        return False

lens = []
# левая граница искомого отрезка
for a in range(1, 500+1):
    # правая граница искомого отрезка
    for b in range(a, 500+1):
        f = 0
        for x in range(1, 1000):
            if ((F(10, 32, x) and not(F(a, b, x))) <= (not(F(18, 45, x)))) == False:
                f = 1
                break
        if f == 0:
            # добавляем длину отрезка в массив
            lens.append(b-a)
print(min(lens))

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