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

На числовой прямой даны два отрезка: N  = [30,70]  и M = [45,60]  . Укажите наименьшую возможную длину отрезка А для которого выражение

((x ∈ N )∧ (x ∈ M )) −→ (x ∈ A)

тождественно истинно (т.е. принимает значение 1) при любом натуральном значении переменной х?

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

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

(x ∕∈ N) ∨(x ∕∈ M ) ∨(x ∈ A )

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

(x ∈ N )∧(x ∈ M )

Это выражение истино (а исходное соответственно ложно), когда x  принадлежит отрезку N  , и принадлежит отрезку M  одновременно. Это будут x ∈ [45;60]  . Чтобы исходное выражение было истинно при любом x  необходимо «перекрыть» отрезком A  как минимум эту область. Тогда отрезок A  будет [45;60]  или больше. Так как в задании просят найти минимальную длину, то A = [45;60]  , а его длина 60 − 45 = 15  .

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

n = [i for i in range(30, 71)]
m = [i for i in range(45, 61)]

mn = 10 ** 10
for a1 in range(1, 100):
    for a2 in range(a1, 101):
        f = 0
        a = [i for i in range(a1, a2)]
        for x in range(1, 300):
            if (((x in n) and (x in m)) <= (x in a)) == False:
                f = 1
                break
        if f == 0:
            # -1, потому что мы считаем длину,
            # т.е. количество "дорог" между точками(целыми числами),
            mn = min(len(a)-1, mn)
print(mn)

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