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

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

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

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

Задача 1#23502

Укажите наименьшее целое значение A  , при котором выражение

(5k + 6n > 57)∨ ((k ≤ A )∧(n < A))

истинно для любых целых положительных значений k  и n  .

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

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

Инвертируем известную часть:

5k+ 6n ≤ 57

Чтобы выражение было истинным, для A  должны выполняться сразу оба условия из правой части, поэтому для 5k +6n ≤ 57  стоит подобрать 2 пары: с наибольшим значение k  , и с наибольшим значением n  , и выбрать из двух возможных A  наибольшее, чтобы при меньших значениях k  и n  выражение точно было истиной.

k = 10,n = 1  , поскольку k > n  , рассмотрим k ≤ A  :

10 <= A  , A = 10  .

k = 1,n = 8  , поскольку k < n  , рассмотрим n < A  :

8 < A  , A = 9  .

Т.к. 10 > 9,A = 10

 

Идея решения:

Идея заключается в переборе возможных целых неотрицательных значений параметра A  с помощью цикла for. Для каждого фиксированного A  проверяем все положительные целые пары (k,n)  в некотором достаточном диапазоне (в программе это 1...999  ). Для каждой пары вычисляем логическое выражение

(5k+ 6n > 57)∨ ((k ≤ A)∧ (n < A)).

Если найдётся хотя бы одна пара (k,n)  , для которой выражение ложно, текущее A  не подходит. Первый (то есть наименьший) A  , для которого выражение истинно для всех проверенных (k,n)  , и будет ответом.

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

# перебор возможных значений A от 0 до 999
for a in range(0, 1000):
    # флаг: True - предполагаем, что текущее A подходит
    flag = True
    # перебор k от 1 до 999
    for k in range(1, 1000):
        # перебор n от 1 до 999
        for n in range(1, 1000):
            # если выражение ложно для текущих k и n, помечаем A как неподходящее
            if not ((5 * k + 6 * n > 57) or ((k <= a) and (n < a))):
                flag = False
                # выходим из внутреннего цикла n, так как нашли "плохую" пару
                break
        # если уже найдена "плохая" пара, выходим из цикла k
        if not flag:
            break
    # если ни одной "плохой" пары не нашлось, печатаем текущее (наименьшее) A и прерываем поиск
    if flag:
        print(a)
        break

Ответ: 10

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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