Тема 15. Преобразование логических выражений
15.01 Смешанное
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела преобразование логических выражений
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#29734

Обозначим через ДЕЛ(n  , m  ) утверждение «натуральное число n  делится без остатка на натуральное число m  ».

На числовой прямой дан промежуток A  и множество S = {23,27,45,46,47,67} .

Определите максимальную длину промежутка A  , такого что его правая граница не больше 50  и выражение

                                                                -------
((¬Д ЕЛ(x,3)∧ (y ∕∈ S)) → ((x > 7) → (y > 11)))∨ (x⋅y ≤ 76)∨(x ∕∈ A)∨ (y ∈ A)

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

Показать ответ и решение

Решение 1 (ручками):

Система для врагов:

(
||| x ||... 3
||||
|||| y ∕∈ S
|||| x > 7
|{
| y ≤ 11
||||
|||| x⋅y > 76
|||| x ∈ A
|||(
  y ∈ A

Враги мечтают, чтобы x > 7  , y ≤ 11  и x ⋅y > 76  . Тогда при xmin = 8  единственные y  , которые смогут взять враги, чтобы условие x⋅y > 76  выполнялось, будут равны 10  и 11  . Заметит, что при увеличении x  враги смогут брать больше вариантов y  , но всегда максимальное значение ymax = 11  . Все натуральные y <= ymax  не принадлежат S  , значит условие y ∕∈ S  автоматически выполнено. Мечты врагов такие: «Вот бы y ∈ A  ».

Друзья говорят: «Нет, y ∕∈ A  ». Тогда при условии, что правая граница отрезка A  не больше 50  , Amax = (11,50]  (чтобы даже ymax ∕∈ A  ), а его максимальная длина равна 50 − 11 = 39  .

 

Решение 2 (прогой):

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

def f(x, y, A):
    S = {23, 27, 45, 46, 47, 67}
    return (((x % 3 != 0) and (not y in S)) <= ((x > 7) <= (y > 11))) \
        or (x * y <= 76) or (not inn(x, A)) or (not inn(y, A))

n = 5
ans = 0
for a in range(1 * n, 50 * n):
    for b in range(a, 50 * n + 1):  # + 1 чтобы проверить саму точку b
        A = [a / n, b / n]
        flag = True
        for x in range(1, 100):
            for y in range(1, 15):
                if not f(x, y, A):
                    flag = False
                    break
            if not flag:
                break
        if flag:
            ans = max(ans, A[1] - A[0])
print(ans)

Ответ: 39

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное обучение
в Школково

Для детей ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Брянской областей, а также школьникам, находящимся в пунктах временного размещения Крыма обучение на платформе бесплатное.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ или олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!