Тема 15. Алгебра логики – преобразование логических выражений

15.03 Неравенства

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

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

Задача 1#87946

Для какого наименьшего целого числа А выражение

(y+ 10⋅x < A) ∨(5⋅x + 2⋅y > 102)

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

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

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

Отрицаем известную часть: 5⋅x + 2⋅y ≤ 102  . Так как х и у – целые натуральные, то минимальное значение y  равно 1. Тогда 5⋅x ≤ 100  , то есть x    = 20
 max  .

Значит, A > 1 + 10⋅20 → A > 201 → A = 202  .

 

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

Идея заключается в переборе возможных значений A  (от -1000 до 1000) и проверке, что для всех комбинаций  x  и y  (от 1 до 1000) выражение (y+ 10x < A)∨ (5x+ 2y > 102)  выполняется. Если для какого-то A  найдётся хотя бы одна пара (x,y)  , нарушающая условие, это A  отбрасывается. Минимальное A  , при котором условие выполняется для всех x  и y  , и будет ответом.

Для реализации этой идеи создадим цикл for для перебора параметра A  . Внутри него, также с помощью циклов for, организуем перебор значений x  и y  . Для каждого A  будем создавать переменную-флаг, которая изначально равна 0. Если выражение ложно хотя бы для одного набора переменных, то её значение будем устанавливать 1. Если флаг стал равен 1, то можно прервать циклы по x  и y  и перейти к следующему A  . Если после перебора всех значений флаг остаётся 0, значит, выражение тождественно истинно. Так как по условию требуется найти минимальное A  , то если после завершения цикла флаг остался 0, выведем A  и прервём цикл.

# Перебираем возможные значения A в широком диапазоне
for a in range(-1000, 1000):
    c = 0  # Флаг: 0 - условие выполняется для всех x и y, 1 - нарушается
    for x in range(1, 1000): # Перебираем натуральные x
        for y in range(1, 1000): # Перебираем натуральные y
            # Проверяем, ложное ли выражение для текущих x, y и a
            if ((y + 10*x < a) or (5*x + 2*y > 102)) == False:
                c = 1 # Если да, меняем значение флага
                break # Прерываем цикл по y
        if c == 1: # Прерываем цикл по x, если флаг равен 1
            break
    # Если флаг остался 0, значит, для этого a условие выполнено для всех x и y
    if c == 0:
        print(a) # Выводим найденное минимальное A
        break # Завершаем поиск, так как ищем наименьшее A

Ответ: 202

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

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

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

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

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

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

Бесплатное онлайн-обучение

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

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

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

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

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

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

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

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