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

На числовой прямой задан отрезок A  . Известно, что формула

((x ∈ A) → (x2 ≤ 144))∧ ((y2 ≤ 100) → (y ∈ A ))

тождественно истинна при любых вещественных x  и y  . Какую наибольшую длину может иметь отрезок A  ?

Аналитическое решение

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

((x ∕∈ A)∨ (x2 ≤ 144))∧ ((y2 > 100) ∨(y ∈ A )) » class=»math-display» src=»/images/inform/reshen/reshen-4213-1.svg» width=»auto»></div>
<p class= Нарисуем полученные неравенства на числовых осях:

PIC

Красным на этом рисунке выделены области, которые перекрываются известной частью выражения, а синей те части, которые необходимо перекрыть отрезком A  . Так как (x ∕∈ A)  и (y ∈ A)  , то наибольший отрезок, которым может быть A  это [-12; 12]. Так как если сделать его еще больше, то будут точки на оси x  для которых выражение не будет являться истиной. Длина этого отрезка – 24.

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

maxLen = 0  # Наибольшая длина отрезка А

# Так как по задаче числа - вещественные,
# то будем делать перебор с точностью до 0.25.

# Для этого нужно перебирать целые числа (заранее умноженные на 4),
# а затем делить на 4. Это нужно, так как range перебирает только целые числа.

# Представим отрезок A = [a; b]
for a in range(-30, 30 + 1):
    for b in range(a, 30 + 1):
        ok = 1  # Создадим переменную-флаг
        # Если она будет равна 1, то отрезок подходит
        # Если она изменится и станет равна 0, то отрезок не подходит

        for x in range(-30*4, 30*4 + 1):
            x /= 4
            for y in range(-30*4, 30*4 + 1):
                y /= 4
                # (x принадлежит отрезку А=[a;b]) равносильно выполнению неравенства (a <= x <= b)
                F = ((a <= x <= b) <= (x**2 <= 144)) and ((y**2 <= 100) <= (a <= y <= b))
                if F == 0:  # Если условие нарушается
                    ok = 0  # Изменяем переменную-флаг
                    break  # Выходим из текущего цикла перебора y

            if ok == 0:  # Условие оказалось нарушено
                break # Прекращаем перебор x

        # Если по итогу перебора x и y
        # Переменная-флаг осталась быть равна 1
        if ok == 1:
            # Пробуем сохранить максимальную длину
            maxLen = max(maxLen, (b - a))

print(maxLen)

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