15.03 Неравенства
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
Для какого наибольшего целого неотрицательного числа выражение
тождественно истинно (т.е. принимает значение 1 при любом неотрицательном целом значении
переменной и
Решение руками:
Инвертируем известную часть:
Пусть . Чтобы выполнялось условие
, нужно взять
, в таком случае
условие будет выполняться и для
, и для
.
Если мы возьмём пару , то теперь наибольшее значение
уже будет равно
2.
Соответственно, чем больше мы будем брать , тем большее значение
можно взять.
Но, когда значение станет больше, чем
, то тогда уже придётся ориентироваться в первую
очередь на условие для
.
Следовательно, чтобы найти наибольшее А, нам нужна такая пара , при которой будет
выполняться
.
Это будет пара , и при таких значениях переменных наибольшее
будет равно
22.
Идея решения:
Идея заключается в переборе возможных значений (от
до
) и проверке, что для всех
комбинаций
и
(от
до
) выражение
выполняется. Если найдётся хотя бы одна пара , для которой условие не выполняется (т.е.
логическое выражение окажется ложным), это
отбрасывается. Наибольшее
, при котором условие
выполняется для всех
и
, и будет ответом.
Для реализации этой идеи создадим цикл for для перебора параметра . Внутри него, также с
помощью циклов for, организуем перебор значений
и
. Для каждого
будем создавать
переменную-флаг, которая изначально равна
. Если условие в цикле if выполняется хотя бы раз,
это значит, что исходное выражение оказалось ложным для некоторой пары
, и
не подходит. Если флаг остался равен
, значит, условие в if не выполнилось ни разу и
подходит. Так как мы ищем наибольшее
, нужно запомнить последнее подходящее
значение.
Решение программой:
for a in range(0, 1000): # перебираем возможные A c = 0 # флаг: 0 - условие в цикле ни разу не выполнилось, # 1 - условие в цикле хоть раз выполнилось for x in range(1, 1000): # Перебор x for y in range(1, 1000): # Перебор y # проверяем выполнение условия, если выполняется — меняем флаг if ((y + 2*x != 69) or (a < x) or (a < y)) == False: c = 1 # условие выполнилось (нашли "плохую" пару) break # выходим из цикла y if c == 1: # условие уже выполнилось break # выходим из цикла x if c == 0: # условие не выполнилось ни разу, текущее A подходит print(a) # выводим текущее A
Ошибка.
Попробуйте повторить позже
Каково наибольшее целое при котором истинно высказывание:
Решение руками
Заметим, что логическое следование ложно только в случае . Значит, нужно понять, при
каких x впервые наступит такое условие (и взять x меньше, но максимальный).
Такое условие получается при x = 8: .
Возьмем x = 7: . Получили следование из 0 в 0, что дает истину. Значит,
наибольший x = 7.
Идея решения:
Идея заключается в переборе целых значений и проверке, для какого наибольшего
выполняется импликация
Импликация ложна только когда
истинно, а
ложно. Для всех остальных случаев она
истинна. Следовательно, для каждого
проверяем, что либо
, либо
. Нужно
найти наибольшее целое
, для которого условие истинно.
Для реализации создаём цикл по от
до
. Для каждого
проверяем выполнение
импликации и выводим
, если условие истинно. Поскольку перебор идёт по возрастанию, наибольшее
будет последним выведенным значением.
Решение программой:
for x in range(1000): # перебираем X от 0 до 999 if (50 < x * x) <= (50 > (x + 1) * (x + 1)): # проверяем условие, если оно выполняется, выводим X print(x) # выводим X, для которого условие истинно
Ошибка.
Попробуйте повторить позже
Для какого наибольшего целого неотрицательного числа выражение
тождественно истинно (т.е. принимает значение 1 при любом неотрицательном целом значении
переменных и
Решение руками:
Инвертируем известную часть:
Пусть . Чтобы выполнялось условие
, нужно взять
, в таком случае
условие будет выполняться и для
, и для
.
Если мы возьмём пару , то теперь наибольшее значение
уже будет равно
2.
Соответственно, чем больше мы будем брать , тем большее значение
можно взять.
Но, когда значение станет больше, чем
, то тогда уже придётся ориентироваться в первую
очередь на условие для
.
Следовательно, чтобы найти наибольшее А, нам нужна такая пара , при которой будет
выполняться
.
Это будет пара , и при таких значениях переменных наибольшее
будет равно
32.
Идея решения:
Идея заключается в переборе возможных значений (от
до
) и проверке, что для всех
комбинаций
и
(от
до
) выполняется выражение
Если найдётся хотя бы одна пара , для которой выражение ложно, текущее
отбрасывается. Наибольшее
, для которого условие выполняется для всех
и
, и будет
ответом.
Для реализации создаётся функция f(a), которая возвращает True, если для данного выражение
выполняется для всех
и
, и False иначе. Затем с помощью цикла перебираем
от
до
и выводим все подходящие значения
. Наибольшее подходящее
будет последним
выведенным.
Решение программой:
def f(a): # функция проверяет, выполняется ли выражение для всех x и y при данном a for x in range(1000): # перебор x от 0 до 999 for y in range(1000): # перебор y от 0 до 999 # проверяем выражение: False если условие не выполнено if not((99 != y + 2 * x) or (a < x) or (a < y)): # если нашли "плохую" пару, возвращаем False return False return True # условие выполнено для всех пар, возвращаем True for a in range(1000): # перебираем возможные значения A if f(a): # проверяем, подходит ли текущее A print(a) # выводим A, для которого условие истинно
Ошибка.
Попробуйте повторить позже
Для какого наименьшего целого неотрицательного числа выражение
тождественно истинно (т.е. принимает значение 1 при любых неотрицательных целых значениях переменных и
)?
Решение руками
Инвертируем известную часть:
Пусть . Чтобы выполнялось условие
, нужно взять
, в таком случае условие будет
выполняться и для
, правда не будет выполняться для
.
Если мы возьмём пару , то теперь наименьшее значение
уже будет равно 4.
Соответственно, чем больше мы будем брать , тем больше будет наименьшее значение для
.
Но, когда значение станет больше, чем
, то тогда уже придётся ориентироваться в первую очередь на условие
для
, т.к.
будет меньше чем
, и нам хватит меньшего значения для
, чтобы всё выражение было
истиной.
Следовательно, чтобы найти наименьшее А, нам нужна такая пара , при которой будет выполняться
.
Это будет пара , и при таких значениях переменных наименьшее
будет равно 24.
Идея решения:
Идея заключается в переборе возможных значений (от
до
) и проверке, что для всех комбинаций
и
(от
до
) выполняется выражение
Если найдётся хотя бы одна пара , для которой выражение ложно, текущее
отбрасывается. Нам нужно найти
наименьшее значение
, при котором условие выполняется для всех
и
.
Для реализации создаётся функция f(a), которая возвращает True, если выражение выполняется для всех и
, и
False иначе. Затем перебираем
от
до
и выводим первое подходящее значение.
Решение программой:
# функция проверяет, выполняется ли выражение для всех x и y при данном a def f(a): # перебор x от 1 до 999 for x in range(1, 1000): # перебор y от 1 до 999 for y in range(1, 1000): # проверяем выражение: False если условие не выполнено if ((69 < y + 2 * x) or (a > x) or (a > y)) == False: # если нашли "плохую" пару, возвращаем False return False # условие выполнено для всех пар, возвращаем True return True # перебираем возможные значения A от 0 до 999 for a in range(1000): # проверяем, подходит ли текущее A if f(a): # выводим наименьшее A, для которого условие истинно print(a) break
Ошибка.
Попробуйте повторить позже
Для какого наибольшего целого неотрицательного числа выражение
тождественно истинно при любых целых неотрицательных и
Решение 1 (руками)
Инвертируем известную часть:
Это выражение истино (а исходное соответственно ложно) при и
одновременно. Неизвестная часть
говорит, что сумма x и 3y должна быть больше чем A, тогда возьмем максимальные x и y из известной части,
так как они же будут являться минимальными значениями при которых неизвестная часть должна давать истину.
Подставим
и
, получим
, отсюда
.
Идея решения:
Идея заключается в переборе возможных значений (от
до
) и проверке, что для всех комбинаций
и
(от
до
) выполняется выражение
Выражение ложное только если ,
и
одновременно. Нам нужно найти наибольшее
, при
котором условие выполняется для всех
и
.
Для реализации создаём функцию f(a), которая возвращает True, если выражение выполняется для всех и
, и
False иначе. Затем перебираем
от
до
в порядке убывания и выводим первое подходящее значение. Так как
перебор идёт сверху вниз, найденное значение будет наибольшим.
Решение программой:
# функция проверяет, выполняется ли выражение для всех x и y при данном a def f(a): # перебор x от 1 до 999 for x in range(1, 1000): # перебор y от 1 до 999 for y in range(1, 1000): # проверяем выражение: False если условие не выполнено if not ((x + 3 * y > a) or (x < 18) or (y < 33)): # если нашли "плохую" пару, возвращаем False return False # условие выполнено для всех пар, возвращаем True return True # перебираем возможные значения A от 1000 до 1 for a in range(1000, 0, -1): # проверяем, подходит ли текущее A if f(a): # выводим наибольшее A, для которого условие истинно print(a) break
Ошибка.
Попробуйте повторить позже
Для какого наибольшего целого неотрицательного числа выражение
тождественно истинно при любых целых неотрицательных и
Решение руками
Инвертируем известную часть:
Это выражение истино (а исходное соответственно ложно) при и
одновременно. Неизвестная часть
говорит, что сумма 3x и 9y должна быть больше или равна чем A, тогда возьмем максимальные x и y из
известной части, так как они же будут являться минимальными значениями при которых неизвестная часть должна давать
истину. Подставим
и
, получим
, отсюда
.
Идея решения:
Идея заключается в переборе возможных значений (от
до
) и проверке, что для всех комбинаций
и
(от
до
) выполняется выражение
где означает отрицание условия
. Выражение ложное только если
,
, и
одновременно. Нам нужно найти наибольшее
, для которого выражение истинно для всех
и
.
Для реализации создаётся функция f(a), которая возвращает True, если выражение выполняется для всех и
, и
False иначе. Затем перебираем
от
до
в порядке убывания и выводим первое подходящее значение. Так как
перебор идёт сверху вниз, найденное значение будет наибольшим.
Решение программой:
# функция проверяет, выполняется ли выражение для всех x и y при данном a def f(a): # перебор x от 1 до 999 for x in range(1, 1000): # перебор y от 1 до 999 for y in range(1, 1000): # проверяем выражение: False если условие не выполнено if not ((3 * x + 9 * y >= a) or not (x > 20) or (y < 10)): # если нашли "плохую" пару, возвращаем False return False # условие выполнено для всех пар, возвращаем True return True # перебираем возможные значения A от 1000 до 1 for a in range(1000, 0, -1): # проверяем, подходит ли текущее A if f(a): # выводим наибольшее A, для которого условие истинно print(a) break
Ошибка.
Попробуйте повторить позже
Для какого наибольшего целого неотрицательного числа выражение
тождественно истинно при любых целых неотрицательных и
Решение 1
Упростим, а затем инвертируем известную часть:
Поскольку по условию должно быть меньше либо равно
, нам надо взять наименьшие возможные
значения для
и
, чтобы при больших значениях условие для
точно выполнялось. Следовательно, нужно
брать
, то есть
, или же
, наибольшим значением для
будет
17.
Идея решения:
Для нахождения наибольшего целого , при котором выражение
тождественно истинно, используем программный перебор. Идея состоит в том, чтобы для каждого возможного
проверять все пары
в заданном диапазоне (от 1 до 999). Если найдётся хотя бы одна пара, при которой выражение
ложно, текущее
не подходит. Последнее
, для которого условие выполнено для всех
, и будет
наибольшим.
Для реализации создаём функцию f(a), которая возвращает True, если выражение выполняется для всех пар , и
False иначе. Далее перебираем
в порядке возрастания и выводим подходящее значение, последнее выведенное А и
будет ответом.
Решение программой:
# функция проверяет выполнение выражения для всех x и y при данном a def f(a): # перебор x от 1 до 999 for x in range(1, 1000): # перебор y от 1 до 999 for y in range(1, 1000): # проверяем условие: False, если выражение ложно if ((x + 13/9 * y >= a) or not(x >= y) or (y < 7)) == False: # если найден "плохой" набор (выражение ложно), возвращаем False return False # если ни одна пара не нарушила условие, возвращаем True return True # перебор A от 0 до 99 for a in range(100): # проверяем, подходит ли текущее A if f(a): # выводим наибольшее целое A, для которого выражение тождественно истинно print(a)
Ошибка.
Попробуйте повторить позже
Для какого наименьшего целого неотрицательного числа выражение
тождественно истинно, т.е. принимает значение при любых целых неотрицательных
?
Решение руками:
Инвертируем известную часть:
Нам нужно взять наибольшее возможное значение для , чтобы при меньших значениях условие
точно
выполнялось. Следовательно, при
, наименьшее
.
Идея решения:
Идея заключается в переборе возможных значений от
до
с помощью цикла for. Для каждого
проверяем
все возможные значения
от
до
через вложенный цикл for. Для каждой пары
вычисляем логическое
выражение
Если хотя бы для одного выражение оказалось ложным, текущее
отбрасываем и переходим к следующему
значению. Если выражение истинно для всех
, значит текущий
подходит, и так как мы ищем наименьшее
,
выводим его и прерываем цикл.
Решение программой:
# перебор возможных значений A от 0 до 999 for a in range(1000): # флаг: 0 - условие не нарушено ни разу, 1 - условие нарушено хотя бы раз fl = 0 # перебор x от 0 до 999 for x in range(1000): # вычисляем выражение для текущего x f = (x < a) or (x < 20) or (x > 30) # если выражение ложно if f == 0: # отмечаем нарушение fl = 1 # выходим из цикла по x break # если условие не нарушено ни разу, текущее A подходит if not fl: # выводим наименьшее A print(a) # прерываем цикл, так как найден наименьший A break
Ошибка.
Попробуйте повторить позже
Для какого наименьшего целого неотрицательного числа выражение
тождественно истинно, т.е. принимает значение при любых целых неотрицательных
?
Решение руками:
Инвертируем известную часть:
Корни для первого неравенства - 1 и 2, а значит можно превратить его в .
В данном диапазоне единственные целые значения - это 1 и 2.
При ,
.
При ,
.
Чтобы условие для точно выполнялось, нужно взять значения
как можно больше, чтобы при меньших
значения переменных выражение точно было истиной. Следовательно,
, и при данных значениях наименьшее
.
Идея решения:
Для нахождения наименьшего целого , при котором выражение
тождественно истинно, используем программный перебор. Идея заключается в том, чтобы проверить все
пары в диапазоне от
до
для каждого значения
от
до
. Если для какой-то пары
выражение ложно, текущее
не подходит. Первое
, для которого выражение истинно для всех
, будет
наименьшим. Если для текущего
при любой паре
выражение оказалось True, то данное
нам
подходит.
Для реализации создаём функцию f(x, y, a), которая возвращает True, если выражение выполняется для
конкретной пары , и False иначе. Затем во внешнем цикле перебираем
и проверяем условие для всех
.
Решение программой:
# функция проверяет выполнение выражения для конкретной пары x и y при данном a def f(x, y, a): return (x ** 2 - 3 * x + 2 > 0) or (y > x ** 2 + 7) or (x * y < a) # перебор возможных значений A от 0 до 999 for a in range(1000): fl = 0 # флаг: 0 - условие не нарушено, 1 - условие нарушено хотя бы раз # перебор x от 0 до 299 for x in range(300): # перебор y от 0 до 299 for y in range(300): # проверяем выражение для текущих x, y if not f(x, y, a): fl = 1 # условие хотя бы раз не выполнилось break # выходим из цикла по y if fl: # если условие нарушено break # выходим из цикла по x # если условие не нарушено ни разу, текущее A подходит if not fl: print(a) # выводим наименьшее A break # завершение перебора, так как найден наименьший A
Ошибка.
Попробуйте повторить позже
Для какого наименьшего целого неотрицательного числа выражение
тождественно истинно, то есть принимает значение при любых целых неотрицательных
и
?
Решение 1. Руками
Инвертируем известную часть:
Чтобы условие выполнялось всегда, надо взять для
и
наибольшие возможные значения, чтобы при
меньших значениях условие точно выполнялось.
То есть, , а
, тогда наименьшее возможное
.
Идея решения:
Идея заключается в переборе возможных значений от
до
с помощью цикла for. Для каждого
проверяем
все возможные значения
и
от
до
через вложенные циклы for. Для каждой тройки
вычисляем
логическое выражение
Если хотя бы для одной пары выражение оказалось ложным, текущее
отбрасываем и переходим к
следующему значению. Если выражение истинно для всех
, значит текущее
подходит, и так как мы ищем
наименьшее
, выводим его и прерываем цикл.
Решение программой:
# функция проверяет выполнение выражения для конкретного A def f(a): # перебор x от 0 до 999 for x in range(1000): # перебор y от 0 до 999 for y in range(1000): # проверяем выражение для текущих x и y if not((y + 2 * x < a) or (x > 30) or (y > 20)): # если выражение ложно, возвращаем False return False # если ни одна пара не нарушила условие, возвращаем True return True # перебор возможных значений A от 0 до 999 for a in range(1000): # проверяем, подходит ли текущее A if f(a): # выводим наименьшее A print(a) # прерываем цикл, так как найден наименьший A break
Ошибка.
Попробуйте повторить позже
Сколько существует целых неотрицательных чисел , при которых выражение
тождественно истинно (т.е. принимает значение при любых неотрицательных целых значениях переменных
и
)?
Решение руками:
Упростим выражение:
Инвертируем известную часть для левой и правой части:
Нам нужно, чтобы выполнялась и левая часть выражения, и правая.
Разберём сначала левую часть:
Чтобы выполнялось, нужно взять наименьшее возможное значение для
, чтобы при больших
выражение точно было истиной.
То есть, при для левой части
... и так до
.
Теперь разберём правую часть:
Чтобы выполнялось, нужно взять наибольшее возможное значение для
, чтобы при меньших
выражение точно было истиной.
То есть, при для правой части
... и так до бесконечности.
Общие значения для обоих частей лежат в отрезке . Cледовательно, подходящих значений
будет
.
Идея решения:
Для нахождения количества целых неотрицательных , при которых выражение
тождественно истинно, используем программный перебор. Идея заключается в том, чтобы проверить все значения от
до
с помощью цикла for. Для каждого
проверяем все значения
и
от
до
через вложенные циклы
for. Для каждой тройки
вычисляем логическое выражение. Если хотя бы для одной пары
выражение
оказалось ложным, текущее
отбрасываем. Если выражение истинно для всех
, увеличиваем счётчик подходящих
. После перебора всех
счётчик покажет количество целых неотрицательных
, для которых выражение
тождественно истинно.
Решение программой:
# функция проверяет выполнение выражения для конкретного x, y и A def f(x, y, a): return ((y * y < a) <= (y <= 8)) and ((x <= 5) <= (x * x <= a)) # счётчик подходящих A counter = 0 # перебор возможных значений A от 0 до 299 for a in range(300): # флаг: 0 - условие не нарушено ни разу, 1 - условие нарушено хотя бы раз fl = 0 # перебор x от 0 до 299 for x in range(300): # перебор y от 0 до 299 for y in range(300): # если выражение ложно if not f(x, y, a): fl = 1 # меняем значение флага break # выходим из цикла y if fl: # если флаг равен 1 break # выходим из цикла x # если условие не нарушено ни разу, увеличиваем счётчик if not fl: counter += 1 # выводим количество подходящих A print(counter)
Ошибка.
Попробуйте повторить позже
Для какого наибольшего целого неотрицательного числа выражение
тождественно истинно при любых целых неотрицательных и
Решение 1. Руками
Инвертируем известную часть:
Чтобы условие выполнялось всегда, надо взять для
и
наименьшие возможные значения, чтобы при
больших значениях
точно было меньше, чем
.
То есть, , а
,
, тогда наименьшее возможное
.
Идея решения:
Для нахождения наибольшего целого , при котором выражение
тождественно истинно для всех неотрицательных целых и
, используем программный перебор. Идея заключается в
том, чтобы проверить все значения
от
до
с помощью цикла for. Для каждого
перебираем все значения
и
от
до
через вложенные циклы for. Для каждой тройки
вычисляем логическое выражение. Если хотя
бы для одной пары
выражение оказалось ложным, текущее
отбрасываем. Если выражение истинно для всех
, обновляем максимальное найденное значение
. В конце цикла максимальное значение будет наибольшим
подходящим
.
Решение программой:
# функция проверяет выполнение выражения для конкретного x, y и A def f(x, y, A): return (x + 3*y > A) or (x < 18) or (y < 33) # переменная для хранения наибольшего подходящего A ans = 0 # перебор возможных значений A от 1 до 499 for a in range(1, 500): # флаг: True - выражение выполняется для всех x и y, False - хотя бы один случай нарушает for x in range(1, 500): for y in range(1, 500): flag = True # если выражение ложно для текущих x и y if not f(x, y, a): flag = False break if not flag: break # если выражение выполняется для всех x и y, обновляем максимум if flag: ans = max(a, ans) # выводим наибольшее подходящее A print(ans)
Ошибка.
Попробуйте повторить позже
Для какого наименьшего целого неотрицательного числа выражение
тождественно истинно при любых целых неотрицательных и
Решение 1. Руками
Инвертируем известную часть:
Т.к. нам нужно, чтобы было больше, чем
, надо взять наибольшие возможные значения для
и
, тогда
при меньших значениях для данных переменных,
точно будет больше.
Следовательно, , а
(т.к.
должно выполняться).
, или же
, наименьшее значение
.
Идея решения:
Для нахождения наименьшего целого , при котором выражение
тождественно истинно для всех неотрицательных целых и
, используем программный перебор. Идея заключается в
том, чтобы проверить все значения
от
до
с помощью цикла for. Для каждого
перебираем все значения
и
от
до
через вложенные циклы for. Для каждой тройки
вычисляем логическое выражение. Если хотя
бы для одной пары
выражение оказалось ложным, текущее
отбрасываем и переходим к следующему значению.
Если выражение истинно для всех
, значит текущее
подходит, и так как мы ищем наименьшее
, выводим его и
прерываем цикл.
Решение программой:
# функция проверяет выполнение выражения для конкретного x, y и A def f(x, y, A): return (2 * x + 5 * y <= A) or (x >= y) or (y > 11) # перебор возможных значений A от 0 до 499 for a in range(500): # флаг: True - выражение выполняется для всех x и y, False - хотя бы один случай не выполняется for x in range(100): for y in range(100): flag = True # если выражение ложно для текущих x и y if not f(x, y, a): flag = False # меняем значение флага break # сбрасываем цикл y if not flag: break # сбрасываем цикл x # если выражение выполняется для всех x и y, текущее A подходит if flag: # выводим наименьшее подходящее A print(a) break
Ошибка.
Попробуйте повторить позже
Для какого наименьшего целого неотрицательного числа выражение
тождественно истинно при любых целых неотрицательных и
Решение 1. Руками
Инвертируем известную часть:
Чтобы условие выполнялось всегда, надо взять для
и
наибольшие возможные значения, чтобы при
меньших значениях условие точно выполнялось.
То есть, , а
, тогда наименьшее возможное
.
Идея решения:
Для нахождения наименьшего целого , при котором выражение
тождественно истинно для всех неотрицательных целых и
, используем программный перебор. Идея заключается в
том, чтобы проверить все значения
от
до
с помощью цикла for. Для каждого
перебираем все значения
и
от
до
через вложенные циклы for. Для каждой тройки
вычисляем логическое выражение. Если хотя
бы для одной пары
выражение оказалось ложным, текущее
отбрасываем. Если выражение истинно для всех
, проверяем, является ли текущее
минимальным, и обновляем его значение. В конце цикла минимальное значение
будет наименьшим подходящим.
Решение программой:
# функция проверяет выполнение выражения для конкретного x, y и A def f(x, y, A): return (y + 2*x < A) or (30 < x) or (20 < y) # переменная для хранения наименьшего подходящего A ans = 10000000 # перебор возможных значений A от 0 до 99 for a in range(100): # флаг: # True - выражение выполняется для всех x и y # False - хотя бы один случай не выполняет выражение # перебор x от 0 до 99 for x in range(100): # перебор y от 0 до 99 for y in range(100): # предполагаем, что выражение выполняется flag = True # если выражение не выполняется для текущих x и y if not f(x, y, a): # меняем флаг, так как условие не выполняется flag = False # выходим из цикла y, так как нашли "плохую" пару break # выходим из цикла x, так как условие уже не выполняется if not flag: break # если выражение выполняется для всех x и y, обновляем минимальный A if flag: ans = min(a, ans) # выводим наименьшее подходящее A print(ans)
Ошибка.
Попробуйте повторить позже
Для какого наибольшего целого неотрицательного числа выражение
тождественно истинно при любых целых неотрицательных и
Аналитическое решение:
Упростим выражение и раскроем импликации:
Обе части выражения должны давать истину, поэтому инвентируем известные части обеих частей выражения и рассмотрим их отдельно:
Сначала рассмотрим левую часть:
Чтобы точно было больше, чем
, надо взять наибольшее возможное значение для
, чтобы при меньших
выражение точно было истинным.
При ,
, значит
... и так далее до бесконечности.
Теперь рассмотрим правую часть:
Чтобы точно было меньше, чем
, надо взять наименьшее значение для
, чтобы при больших
выражение
точно было истинным.
При ,
,
- максимальное возможное
для правой части
Наибольшее общее значение для обеих частей выражения – это .
Идея решения:
Для нахождения наибольшего целого , при котором выражение
тождественно истинно для всех неотрицательных целых и
, используем программный перебор. Идея заключается в
том, чтобы проверить все значения
от
до
с помощью цикла for. Для каждого
перебираем все значения
и
от
до
через вложенные циклы for. Для каждой тройки
проверяем логические импликации. Если хотя
бы для одной пары
выражение оказалось ложным, текущее
отбрасываем. Если выражение истинно для всех
, текущее
обновляем как потенциально наибольшее. В конце цикла наибольшее подходящее
и будет
ответом.
Решение программой:
# функция проверяет выполнение выражения для конкретного x, y и A def f(a): for x in range(1, 1000): for y in range(1, 1000): # проверяем, выполняется ли логическая импликация if (((x <= 9) <= (x * x <= a)) and ((y * y <= a) <= (y <= 10))) == False: # если условие не выполняется, возвращаем False return False # если условие выполняется для всех x и y, возвращаем True return True # перебор возможных значений A от 0 до 999 for a in range(1000): # если выражение тождественно истинно для текущего A if f(a): # выводим найденное наибольшее A print(a)
Ошибка.
Попробуйте повторить позже
Сколько существует целых неотрицательных чисел , при которых выражение
тождественно истинно (т.е. принимает значение 1 при любых неотрицательных целых значениях переменных и
)?
Решение руками:
Упростим выражение:
Инвертируем известную часть для левой и правой части:
Нам нужно, чтобы выполнялась и левая часть выражения, и правая.
Разберём сначала левую часть:
Чтобы выполнялось, нужно взять наименьшее возможное значение для
, чтобы при больших
выражение точно было истиной.
То есть, при для левой части
... и так до
.
Теперь разберём правую часть:
Чтобы выполнялось, нужно взять наибольшее возможное значение для
, чтобы при меньших
выражение точно было истиной.
То есть, при для правой части
... и так до бесконечности.
Общие значения для обоих частей лежат в отрезке . Cледовательно, подходящих значений
будет
.
Идея решения:
Для подсчёта количества целых неотрицательных чисел , при которых выражение
тождественно истинно для всех неотрицательных целых и
, используем программный перебор. Идея заключается в
том, чтобы проверить все значения
от
до
с помощью цикла for. Для каждого
перебираем все значения
и
от
до
через вложенные циклы for. Для каждой тройки
проверяем логические импликации. Если
хотя бы для одной пары
выражение оказалось ложным, текущее
отбрасываем. Если выражение
истинно для всех
, увеличиваем счётчик. В конце цикла счётчик содержит количество подходящих
.
Решение программой:
# инициализация счётчика подходящих значений A count = 0 # перебор возможных значений A от 0 до 999 for a in range(0, 1000): # флаг: 0 - выражение не проверялось на ложное значение # 1 - хотя бы один случай не выполняет выражение c = 0 # перебор x от 1 до 999 for x in range(1, 1000): # перебор y от 1 до 999 for y in range(1, 1000): # проверяем выполнение логического выражения if (((y*y < a) <= (y <= 8)) and ((x <= 5) <= (x*x <= a))) == False: # если условие не выполняется, меняем флаг c = 1 # выходим из цикла y, так как нашли "плохую" пару break # выходим из цикла x, так как условие уже не выполняется if c == 1: break # если выражение выполняется для всех x и y, увеличиваем счётчик if c == 0: count += 1 # выводим количество подходящих A print(count)
Ошибка.
Попробуйте повторить позже
Для какого наименьшего целого числа формула
тождественно истинна при любых положительных и
?
Решение 1. Руками
Инвертируем известную часть:
Нужно, чтобы выполнялось одно из двух условий для :
и
Чтобы выполнялось , нужно взять наибольшее возможное значение для
, чтобы при меньших
значение
точно было больше.
, значит нам подходят следующие значения для
:
... и так далее до бесконечности.
Чтобы выполнялось , нужно взять наибольшее возможное значение для
, чтобы при меньших
значение
точно было больше.
, значит нам подходят следующие значения для
:
... и так далее до бесконечности.
Наименьшее А, которое удовлетворяет одному из условий – это .
Идея решения:
Для нахождения наименьшего целого , при котором выражение
тождественно истинно для всех положительных целых и
, используем программный перебор. Идея заключается в
том, чтобы проверить все значения
от
до
с помощью цикла for. Для каждого
перебираем все
значения
и
от
до
через вложенные циклы for. Для каждой тройки
вычисляем
логическое выражение. Если хотя бы для одной пары
выражение оказалось ложным, текущее
отбрасываем. Если выражение истинно для всех
, текущее
подходит как минимальное, и выводим
его.
Решение программой:
# функция проверяет выполнение выражения для конкретного x, y и A def f(x, y, a): return (x > 23) or (a > x) or (a > y) or (y > 47) # перебор возможных значений A от 0 до 999 for a in range(1000): # предполагаем, что текущее A подходит podh = True # перебор x от 1 до 999 for x in range(1000): # перебор y от 1 до 999 for y in range(1000): # если выражение не выполняется для текущих x и y if not(f(x, y, a)): # меняем флаг, так как условие не выполняется podh = False # выходим из цикла y, нашли "плохую" пару break # выходим из цикла x, так как условие уже не выполняется if not(podh): break # если выражение выполняется для всех x и y, выводим A и прерываем поиск if podh: print(a) break
Ошибка.
Попробуйте повторить позже
Укажите наименьшее целое значение , при котором выражение
истинно для любых целых положительных значений и
.
Аналитическое решение:
Инвертируем известную часть:
Чтобы выражение было истинным, для должны выполняться сразу оба условия из правой части, поэтому
для
стоит подобрать 2 пары: с наибольшим значение
, и с наибольшим значением
, и
выбрать из двух возможных
наибольшее, чтобы при меньших значениях
и
выражение точно было
истиной.
, поскольку
, рассмотрим
:
,
.
, поскольку
, рассмотрим
:
,
.
Т.к.
Идея решения:
Идея заключается в переборе возможных целых неотрицательных значений параметра с помощью цикла for. Для
каждого фиксированного
проверяем все положительные целые пары
в некотором достаточном диапазоне (в
программе это
). Для каждой пары вычисляем логическое выражение
Если найдётся хотя бы одна пара , для которой выражение ложно, текущее
не подходит.
Первый (то есть наименьший)
, для которого выражение истинно для всех проверенных
, и будет
ответом.
Решение программой:
# перебор возможных значений 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
Ошибка.
Попробуйте повторить позже
Укажите наибольшее целое значение А, при котором выражение
Аналитическое решение:
Инвертируем известную часть:
Пары, которые будут подходить под такое условие: ;
;
и т.д.
Оба условия для построены так, что
должно быть меньше правой части. Следовательно, чтобы
точно было
меньше при любых значениях
и
, надо взять наименьшие возможные значения для данных переменных, чтобы при
больших значениях условие точно выполнялось.
Пара, подходящая под данное условие - это .
,
,
.
Наибольшим значением для - это 51.
Идея решения:
Проверяем программно все неотрицательные кандидаты в заданном диапазоне (в коде — 0 до 99). Для каждого
фиксированного
с помощью вложенных циклов for перебираем все положительные целые пары
(в коде — от
до
). Для каждой пары вычисляем логическое выражение
Если для какой-либо пары выражение ложно, данный не подходит. Если же для всех перебранных пар выражение
истинно, этот
считается подходящим. Поскольку требуется найти наибольшее подходящее
, в конце нужно взять
максимум среди всех подходящих
.
# Функция проверяет, подходит ли конкретное значение A def f(a): # Перебираем x в диапазоне от 1 до 999 for x in range(1, 1000): # Перебираем y в диапазоне от 1 до 999 for y in range(1, 1000): # Проверяем выполнение логического выражения # Если выражение ложно хотя бы для одной пары (x, y), # то данный A не подходит if ((y - x != 5) or (a < 2 * x ** 3 + y) or (a < y ** 2 + 16)) == False: return False # Если не найдено ни одной "плохой" пары, значит A подходит return True # Перебираем A от 0 до 99 for a in range(100): # Если A подходит if f(a): # Выводим его print(a)
Ошибка.
Попробуйте повторить позже
Найдите наименьшее целое значение А, при котором выражение
Аналитическое решение:
Инвертируем известную часть:
Чтобы выражение было истинным, для должны выполняться сразу оба условия из правой части, поэтому
для
стоит подобрать 2 пары: с наибольшим значение
, и с наибольшим значением
, и
выбрать из двух возможных
наибольшее, чтобы при меньших значениях
и
выражение точно было
истиной.
, поскольку
, рассмотрим
:
,
.
, поскольку
, рассмотрим
:
,
.
Т.к. , и нужно возвести
в квадрат.
Идея решения:
Перебираем значения в порядке возрастания, начиная с
. Для каждого фиксированного
перебираем все
положительные целые значения
и
(в коде — от
до
) и проверяем выполнение логического
выражения
Если хотя бы для одной пары условие не выполняется, такой
исключается. Первый
, для которого
условие истинно при всех проверяемых
, является минимальным подходящим. По условию задачи в ответ
записываем квадрат найденного
.
Решение программой:
# Перебираем возможные значения 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