This media is not supported in your browser
VIEW IN TELEGRAM
Основная сложность задачи заключается в определении наибольшего целого неотрицательного числа A, при котором выражение
(2x + 3y < 30) ∨ (x + y ≥ A)
истинно для всех целых неотрицательных x и y Код решения задачи:
def F(x, y, A):
return((2*x + 3*y) < 30) or ((x + y) >= A)
R = []
for A in range(0, 100):
if all(F(x, y, A) for x in range(0, 100) for y in range(0, 100)):
R.append(A)
print(max(R))
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥6❤🔥5🤨2
#kege #yandex
#reshu #statgrad
#polyakov
#ЕГЭ1 #ЕГЭ10 #ЕГЭ19
#ЕГЭ2 #ЕГЭ11 #ЕГЭ20
#ЕГЭ3 #ЕГЭ12 #ЕГЭ21
#ЕГЭ4 #ЕГЭ13 #ЕГЭ22
#ЕГЭ5 #ЕГЭ14 #ЕГЭ23
#ЕГЭ6 #ЕГЭ15 #ЕГЭ24
#ЕГЭ7 #ЕГЭ16 #ЕГЭ25
#ЕГЭ8 #ЕГЭ17 #ЕГЭ26
#ЕГЭ9 #ЕГЭ18 #ЕГЭ27
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
✏️ Полный разбор задачи в Notion
Заметили, что задачи 15 номера с отрезками вызывают сложности у студентов. Однако, РЕШУ ЕГЭ не рекомендует использовать метод перебора для их решения, что является категорически неверным. Мы представляем универсальный вариант решения, который может быть полезен.
В рамках обсуждения также рассмотрим задачу, в которой используется функция
all()
.def F(x, a1, a2):
P = 10 <= x <= 15
Q = 10 <= x <= 20
R = 5 <= x <= 15
A = a1 <= x <= a2
return (A <= P) == (Q <= R)
R = []
M = [x / 4 for x in range(5 * 4, 20 * 4)]
for a1 in M:
for a2 in M:
if all(F(x, a1, a2) for x in M):
R.append(a2 - a1)
print(min(R))
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Статград
Уровень: Базовый
При каком наименьшем целом A выражение
((y < 20) → (x > 70)) ∨ ¬((x < A) → (y > A))
окажется тождественно истинным при любых целых значениях x и y?
Все 15 номера суперудобно решать через функцию all() про нее писали в этой статье.
def F(x, y, A):
return ((y < 20) <= (x > 70)) or (not((x < A) <= (y > A)))
for A in range(10000):
if all(F(x, y, A) for x in range(100) for y in range(100)):
print(A)
break
# Ответ: 71
def F(x, y, A):
Определение функции F, которая принимает три аргумента: x, y и A.
return ((y < 20) <= (x > 70)) or (not((x < A) <= (y > A)))
Функция возвращает результат логического выражения, которое проверяет два условия и возвращает результат их логической операции or.
for A in range(10000):
Запуск цикла for, который перебирает значения A от 0 до 9999.
if all(F(x, y, A) for x in range(100) for y in range(100)):
Проверка: все результаты функции F(x, y, A) истинны для всех комбинаций значений x от 0 до 99 и y от 0 до 99.
print(A)
Вывод значения A, которое соответствует условиям задачи, после чего выполнение программы завершается с помощью оператора break.
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Уровень: Базовый
Элементами множеств А, P и Q являются натуральные числа, причём P = { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20} и Q = { 3, 6, 9, 12, 15, 18, 21, 24, 27, 30 }.
Известно, что выражение ((x ∈ A) → (x ∈ P)) ∧ (¬(x ∈ Q) → ¬(x ∈ A)) истинно при любом значении переменной х. Определите наибольшее возможное количество элементов множества A.
a = set(range(0, 1000))
def F(x):
P = x in {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}
Q = x in {3, 6, 9, 12, 15, 18, 21, 24, 27, 30}
A = x in a
# ((x ∈ A) → (x ∈ P)) ∧ (¬(x ∈ Q) → ¬(x ∈ A))
return (A <= P) and ((not Q) <= (not A))
for x in range(0, 10000):
if F(x) == False:
a.remove(x)
print(len(a))
# Ответ: 3
a = set(range(0, 1000))
Создание множества a, содержащего числа от 0 до 999.
def F(x):
Объявление функции F с аргументом x.
P = x in {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}
Проверка, принадлежит ли x множеству {2, 4, 6, 8, 10, 12, 14, 16, 18, 20} и сохранение результата в переменную P.
Q = x in {3, 6, 9, 12, 15, 18, 21, 24, 27, 30}
Проверка, принадлежит ли x множеству {3, 6, 9, 12, 15, 18, 21, 24, 27, 30} и сохранение результата в переменную Q.
A = x in a
Проверка, принадлежит ли x множеству a (от 0 до 999) и сохранение результата в переменную A.
return (A <= P) and ((not Q) <= (not A))
Возвращение результата логического выражения: (A <= P) and ((not Q) <= (not A)).
for x in range(0, 10000):
Цикл for, который перебирает значения x от 0 до 9999.
if F(x) == False:
Проверка условия: если результат функции F для значения x равен False.
a.remove(x)
Удаление значения x из множества a.
print(len(a))
Вывод длины множества a после выполнения цикла.
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Поставь
(ДЕЛ(x, 2) → ¬ДЕЛ(x, 13)) ∨ (x + A ≥ 1000)
def F(x, A):
# return здесь пишем логическую функцию
return (x % 2 == 0) <= (x % 13 != 0) or ((x + A) >= 1000)
for A in range(1, 10000):
if all(F(x, A) for x in range(1, 10000)):
print(A)
break
(3x+y>48)∨(x>y)∨(4x+y<A)
def F(x, y, A):
# return здесь пишем логическую функцию
return ((3 * x) + y > 48) or (x > y) or ((4 * x) + y < A)
R = []
for A in range(0, 100):
if any(F(x, y, A) == 0 for x in range(0, 100) for y in range(0, 100)):
R.append(A)
print(max(R))
x&25 ≠ 0 → (x&17 = 0 → x&А ≠ 0)
def F(x):
# return здесь пишем логическую функцию
return (x & 25 != 0) <= ((x & 17 == 0) <= (x & A != 0))
for A in range(0, 1000):
if all(F(x) for x in range(0, 10000)):
print(A)
break
((x принадлежит A) → ¬(x принадлежит P)) → ((x принадлежит A) → (x принадлежит Q))
def F(x):
P = 10 <= x <= 35
Q = 17 <= x <= 48
A = a1 <= x <= a2
# return здесь пишем логическую функцию
return (A <= (not P)) <= (A <= Q)
M = [i / 4 for i in range(1 * 4, 60 * 4)] # нужно поменять range
R = []
for a1 in M:
for a2 in M:
if all(F(x) for x in M):
R.append(a2 - a1)
print(max(R))
Здесь я уже делал пост про логические функции.
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
Для какого наименьшего натурального числа А логическое выражение истинно при любом целом положительном значении переменной х:
(ДЕЛ(x, 2) → ¬ДЕЛ(x, 5) ) ∨ (x + A >= 70)
def F(x, A):
return (((x % 2 == 0) <= (x % 5 != 0)) or (x + A >= 70))
for A in range(1, 1000):
if all(F(x, A) for x in range(1, 10000)):
print(A)
break
# Ответ: 60
1.
def F(x, A):
Объявление функции `F` с аргументами `x` и `A`.
2.
return (((x % 2 == 0) <= (x % 5 != 0)) or (x + A >= 70))
Возвращение значения, которое зависит от выполнения логических условий: (x четное <= x не делится на 5) или (сумма x и A больше или равна 70).
3.
for A in range(1, 1000):
Цикл `for`, в котором переменная `A` принимает значения от 1 до 999.
4.
if all(F(x, A) for x in range(1, 10000)):
Проверка, что для всех значений `x` от 1 до 9999 функция `F(x, A)` возвращает `True`.
5.
print(A)
Вывод на экран значения `A`, при котором условие для всех `x` выполняется.
6.
break
Прерывание цикла после первого найденного значения `A`, удовлетворяющего условию для всех `x`.
Информатика ЕГЭ | itpy
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
def F(x, A):
B = 70 <= x <= 90
return (x % A == 0) or (B <= (x % 27 != 0))
for A in range(1, 1000):
if all(F(x, A) for x in range(1, 10000)):
print(A)
Информатика ЕГЭ | itpy
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Основная волна 07.06.24
Уровень: Базовый
На числовой прямой даны два отрезка: P=[15;40] и Q=[21;63].
Укажите наименьшую возможную длину такого отрезка A, для которого логическое выражение (x∈P)→(((x∈Q)∧¬(x∈A))→¬(x∈P)) истинно (т.е. принимает значение 1) при любом значении переменной х.
def F(x, a1, a2):
P = 15 <= x <= 40
Q = 21 <= x <= 63
A = a1 <= x <= a2
return P <= ((Q and (not A)) <= (not P))
R = []
M = [x / 4 for x in range(5 * 4, 80 * 4)]
for a1 in M:
for a2 in M:
if all(F(x, a1, a2) for x in M):
R.append(a2 - a1)
print(round(min(R)))
# Ответ: 19
def F(x, a1, a2):
Определение функции F с параметрами x, a1 и a2.
P = 15 <= x <= 40
Проверка условия нахождения x в интервале от 15 до 40.
Q = 21 <= x <= 63
Проверка условия нахождения x в интервале от 21 до 63.
A = a1 <= x <= a2
Проверка условия нахождения x в интервале между a1 и a2.
return P <= ((Q and (not A)) <= (not P))
Возвращение результата выражения, описывающего взаимосвязь между P, Q, и A.
R = []
Инициализация пустого списка R, в который будут сохраняться значения.
M = [x / 4 for x in range(5 * 4, 80 * 4)]
Создание списка M с числами, равными x / 4, где x изменяется от 20 до 320 с шагом 1.
for a1 in M:
Цикл перебора значений из списка M для переменной a1.
for a2 in M:
Вложенный цикл перебора значений из списка M для переменной a2.
if all(F(x, a1, a2) for x in M):
Проверка условия с помощью функции F для всех значений x из списка M.
R.append(a2 - a1)
Добавление разности a2 - a1 в список R.
print(round(min(R)))
Вывод минимального значения из списка R после округления.
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
def F(x, y):
return (x + y <= 26) or (y <= x - 4) or (y >= A)
for A in range(1000):
if all(F(x, y) for x in range(100) for y in range(100)):
print(A)
Информатика ЕГЭ | itpy
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Поставь
(ДЕЛ(x, 2) → ¬ДЕЛ(x, 13)) ∨ (x + A ≥ 1000)
def F(x, A):
return # Здесь пишем логическую функцию
R = []
for A in range(1, 10000):
if all(F(x, A) for x in range(1, 10000)):
R.append(A)
print(max(R))
(3x+y>48)∨(x>y)∨(4x+y<A)
def F(x, y, A):
return # Здесь пишем логическую функцию
R = []
for A in range(0, 100):
if any(F(x, y, A) == 0 for x in range(0, 100) for y in range(0, 100)):
R.append(A)
print(max(R))
x&25 ≠ 0 → (x&17 = 0 → x&А ≠ 0)
def F(x, A):
return # Здесь пишем логическую функцию
R = []
for A in range(0, 1000):
if all(F(x, A) for x in range(0, 10000)):
R.append(A)
print(max(R))
((x принадлежит A) → ¬(x принадлежит P)) → ((x принадлежит A) → (x принадлежит Q))
def F(x):
P = 10 <= x <= 35
Q = 17 <= x <= 48
A = a1 <= x <= a2
return # Здесь пишем логическую функцию
# Тут нужно будет поменять range()
M = [i / 4 for i in range(1 * 4, 60 * 4)]
R = []
for a1 in M:
for a2 in M:
if all(F(x) for x in M):
R.append(a2 - a1)
print(max(R))
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
4 13 4 3
Автор: Статград
Уровень: Сложный
Уровень: Базовый
Автор: ЕГКР 27.04.24
Уровень: Базовый
Автор: Апробация 17.05
Уровень: Базовый
1. Домашка, задачи базового уровня (ФИПИ)
2. Практика, задачи повышенной сложности
Информатика ЕГЭ | itpy
Кстати у нас есть чатик
Please open Telegram to view this post
VIEW IN TELEGRAM
4 8 5 4 2
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: ЕГКР 27.04.24
Уровень: Базовый
Для какого наибольшего натурального числа А логическое выражение
¬ДЕЛ(x, А) → (ДЕЛ(x, 28) → ¬ДЕЛ(x, 49))
истинно (т.е. принимает значение 1) при любом натуральном значении переменной х?
Очень хорошая задачка, так как мы можем заменить функцию ДЕЛ на запись x % A == 0, таким образом можем избегать использование логического оператора not.
def F(x, A):
return (x % A != 0) <= ((x % 28 == 0) <= (x % 49 != 0))
R = []
for A in range(1, 10000):
if all(F(x, A) for x in range(1, 10000)):
R.append(A)
print(max(R))
# Ответ: 196
def F(x, A):
Определяем функцию F, принимающую два аргумента: x и A.
return (x % A != 0) <= ((x % 28 == 0) <= (x % 49 != 0))
Возвращаем результаты логического выражения, сравнивая значения остатков от деления x на A, 28 и 49 с использованием логических операторов.
R = []
Инициализируем пустой список R, который будет содержать все значения A, удовлетворяющие определенному условию.
for A in range(1, 10000):
Запускаем цикл по всем целым числам A от 1 до 9999 включительно.
if all(F(x, A) for x in range(1, 10000)):
Проверяем, выполняется ли функция F для всех целых чисел x от 1 до 9999 для текущего A.
R.append(A)
Если условие на предыдущей строке истинно, добавляем значение A в список R.
print(max(R))
Находим и выводим максимальное значение из списка R.
Второй канал про теорию Python
Please open Telegram to view this post
VIEW IN TELEGRAM
5 8 4 2
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Апробация 17.05
Уровень: Базовый
Для какого наименьшего неотрицательного целого числа А формула
((x & 52 ≠ 0) /\ (x & 36 = 0)) → ¬ (x & А = 0)
тождественно истинна (т.е. принимает значение 1) при любом неотрицательном целом значении переменной х?
Под операцией m & n подразумевают побитовую конъюнкцию неотрицательных целых чисел m и n.
То есть числа переводятся в двоичную систему и каждый их бит (с одинаковыми индексами) проводят через оперцию конъюнкции.
Так, например, 14 & 5 = 11102& 01012 = 01002 = 4.
def F(x, A):
return ((x & 52 != 0) and (x & 36 == 0)) <= (x & A != 0)
R = []
for A in range(10000):
if all(F(x, A) for x in range(10000)):
R.append(A)
print(min(R))
#Ответ: 16
def F(x, A):
Определяем функцию F, принимающую два параметра: x и A.
return ((x & 52 != 0) and (x & 36 == 0)) <= (x & A != 0)
Возвращаем результат логического выражения, которое проверяет битовые операции и условия для x.
R = []
Инициализируем пустой список R, который будет содержать значения A, удовлетворяющие определенным условиям.
for A in range(1000):
Запускаем цикл, перебирая значения A от 0 до 999 включительно.
if all(F(x, A) for x in range(10000)):
Проверяем, выполняется ли функция F для всех x от 0 до 9999 для текущего A.
R.append(A)
Если условие на предыдущей строке истинно, добавляем текущее значение A в список R.
print(min(R))
Находим и выводим минимальное значение из списка R.
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
3 8 4 3
Укажите наименьшее целое значение А, при котором выражение
(2y + 3x < A) V (x > 15) V (y > 35)
истинно для любых целых положительных значений х и у.
def F(x, y, A):
return (2 * y + 3 * x < A) or (x > 15) or (y > 35)
for A in range(1, 1000):
if all(F(x, y, A) for x in range(1, 1000) for y in range(1, 1000)):
print(A)
break
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥5👍4
Автор: Л.Шастин
Уровень: Средний
В некоторых системах счисления, для записи оснований которых используются целочисленные переменные p<37 и s<35, выполняется равенство: R4_(p−1)+B0_(s+2)+ T3NK4_p = 23593399_10. Определите произведение подходящих значений p и s и укажите его в ответе в десятичной системе счисления.
for p in range(30, 37):
for s in range(10, 35):
A = int(f'R4', p-1)
B = int(f'B0', s+2)
C = int(f'T3NK4', p)
if (A + B + C) == 23593399:
print(p * s)
Ответ: 780
for p in range(30, 37):
• Цикл, перебирающий значения p от 30 до 36 (включительно)
for s in range(10, 35):
• Вложенный цикл, перебирающий значения s от 10 до 34 (включительно)
A = int(f'R4', p-1)
• Преобразует строку 'R4' в число, интерпретируя её как число в системе счисления с основанием p-1
B = int(f'B0', s+2)
• Преобразует строку 'B0' в число, интерпретируя её как число в системе счисления с основанием s+2
C = int(f'T3NK4', p)
• Преобразует строку 'T3NK4' в число, интерпретируя её как число в системе счисления с основанием p
if (A + B + C) == 23593399:
• Проверяет, равна ли сумма чисел A, B и C значению 23593399
print(p * s)
• Если условие выполняется, выводит произведение p и s
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5🔥3👍2