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

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

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

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

Задача 1#26175

Найдите наименьшее целое значение А, при котором выражение

(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  , и нужно возвести 10  в квадрат.

 

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

Перебираем значения A  в порядке возрастания, начиная с 0  . Для каждого фиксированного A  перебираем все положительные целые значения k  и n  (в коде — от 1  до 999  ) и проверяем выполнение логического выражения

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

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

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

# Перебираем возможные значения A
for A in range(100000):
    # Считаем, что A подходит, пока не доказано обратное
    flag = True

    # Перебираем значения k
    for k in range(1, 1000):
        # Перебираем значения n
        for n in range(1, 1000):
            # Проверяем выполнение условия задачи
            f = (5*k + 6*n > 57) or ((k <= A) and (n < A))

            # Если условие не выполняется — A не подходит
            if f == 0:
                flag = False
                break

        # Если A уже не подходит — прерываем внешний цикл k
        if not flag:
            break

    # Если A подошёл — выводим его квадрат и завершаем поиск
    if flag:
        print(A**2)
        break

Ответ: 100

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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