15 - Логические выражения
и множества
Источники:
сайт Полякова (https://kpolyakov.spb.ru/)
15.1 - Задачи с интервалами
1.1) (№ 6481) На числовой прямой даны три отрезка: P = [106; 218], Q = [132; 388] и R = [183; 256]. Укажите наименьшую возможную длину такого отрезка A, что формула
(¬((x ∈ Q) → ((x ∈ P) ∨ (x ∈ R)))) → (¬(x ∈ A) → ¬(x ∈ Q))
тождественно истинна, то есть принимает значение 1 при любом значении переменной х?
Решение
Вариант 1 (t = 36.44 c.)
for da in range(0,400):
for ai in range(100,400-da):
fl=1
for i in range(212,800):
x=i*0.5
p=106<=x<=218
q=132<=x<=388
r=183<=x<=256
a=(ai<=x<=(ai+da))
if ((not(q) )+ p + r + a)==0: 'Выполнено преобразование лог.высказывания'
fl=0
break
if fl==1: mina=da;break
if fl==1:break
print(mina)
Вариант 2 (t = 20.61 c.)
for da in range(0,400):
for ai in range(100,400-da):
fl=1
for i in range(212,800):
x=i*0.5
if not((not(132<=x<=388))or(106<=x<=218)or(183<=x<=256)or(ai<=x<=(ai+da))):
fl=0
break
if fl==1: mina=da;break
if fl==1:break
print(mina)
Ответ: 132
1.2) (№ 18044 Л.Шастин) На числовой прямой даны два отрезка: M=[32;68] и N=[54;76]. Укажите наименьшую возможную длину такого отрезка A, для которого логическое выражение
¬((x∈M)∨(x∈N))≡ ¬(x∈A)
тождественно истинно (т.е. принимает значение 1) при любом значении переменной x.
Решение
mina=10**16
for a1 in range(1,100):
for a2 in range(a1,100):
fl=1
for x in range(100):
x=x+0.5
if not(not((32<=x<=68)or(54<=x<=76))==(not(a1<=x<=a2))):
fl=0;break
if fl: mina=min(mina,a2-a1)
print(mina)
Ответ: 44
15.2 - Задачи на множества чисел
2.1)(№4283) Элементами множеств А, P, Q являются натуральные числа, причём P={1,3,4,9,11,13,15,17,19,21}, Q={3,6,9,12,15,18,21,24,27,30}. Известно, что выражение
((x∈P)→(x∈A))∨((x∉A)→(x∉Q))
истинно (т.е. принимает значение 1 при любом натуральном значении переменной х. Определите наименьшее возможное произведение элементов в множестве A.
Решение
p=[1,3,4,9,11,13,15,17,19,21]
q=[3,6,9,12,15,18,21,24,27,30]
a=[]
for x in (set(p+q)):
if not((x in p)<=(x in a)or (not(x in a))<=(not(x in q))):
a.append(x)
p=1
for x in a: p*=x
print(p)
Ответ: 8505
15.3 - Задачи с делителями
3.1) (№6829 А.Богданов) Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m». Для какого наименьшего натурального A выражение
(А + х < 123) → (ДЕЛ (х, 5) → ¬ДЕЛ(x, 7))
тождественно истинно (т.е. принимает значение 1) при любом натуральном значении переменной х?
Решение
for a in range(10000):
fl=1
for x in range(1,1000):
if not(int((a+x<123)<=((x%5==0)<=(x%7!=0)))):fl=0;break
if fl:print(a);break
Ответ: 88
3.2) (№6750 Е.Джобс) Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m». Для какого наибольшего натурального A выражение
ДЕЛ(x, 10) ∧ ДЕЛ(x, 26) ∧ (x ≥ 300) → (A ≤ x)
тождественно истинно, т.е. принимает значение 1 при любом натуральном значении переменной х?
Решение
for a in range(10000):
fl=1
for x in range(1,1000):
if not(((x%10==0)and(x%26==0)and(x>=300))<=(a<=x)):fl=0;break
if fl:maxa=a
else:break
print(maxa)
Ответ: 390
3.3) (№18175 Д.Бахтиев) Обозначим через ДЕЛ(x, y) утверждение «натуральное число x делится без остатка на натуральное число y». Для какого наибольшего натурального числа A логическое выражение
(¬ДЕЛ(x,7) ∧ ДЕЛ(x,13)) →(x>A−40)
истинно (т.е. принимает значение 1) при любом натуральном значении переменной х?
Решение
for a in range(1,1000):
fl=1
for x in range(1,2000):
if not((x%7>0 and (x%13==0))<=(x>a-40)):
fl=0;break
if fl: maxa=a
print(maxa)
Ответ: 52
15.4 - Задачи с битовыми логическими операциями
4.1) (№ 7258) Обозначим через m & n поразрядную конъюнкцию неотрицательных целых чисел m и n. Например, 14 & 5 = 11102 & 01012 = 01002 = 4. Для какого наименьшего натурального числа А формула
((x & 673 ≠ 0) ∨ (x & 189 ≠ 0)) → (x &А > 0)
тождественно истинно (то есть принимает значение 1 при любом неотрицательном значении переменной X)?
Решение
for a in range(10000):
fl=1
for x in range(1000):
if not(int((x&673!=0)or(x&189!=0))<=int(x&a>0)):fl=0;break
if fl:print(a);break
Ответ: 701
4.2) (№ 7257) Обозначим через m & n поразрядную конъюнкцию неотрицательных целых чисел m и n. Например, 14 & 5 = 11102 & 01012 = 01002 = 4. Для какого наименьшего натурального числа А формула
((x & 156 ≠ 0) ∨ (x & 436 ≠ 0)) → (x &А > 0)
тождественно истинно (то есть принимает значение 1 при любом неотрицательном значении переменной X)?
Решение
for a in range(10000):
fl=1
for x in range(1000):
if not(int((x&156!=0)or(x&436!=0))<=int(x&a>0)):fl=0;break
if fl:print(a);break
Ответ: 444
4.2) (№ 18266 Л.Шастин) Обозначим через m & n поразрядную конъюнкцию неотрицательных целых чисел m и n. Например, 14 & 5 = 11102 & 01012 = 01002 = 4. Для какого наименьшего натурального числа А формула
((x & 156 ≠ 0) ∨ (x & 436 ≠ 0)) → (x &А > 0)
тождественно истинно (то есть принимает значение 1 при любом неотрицательном значении переменной X)?
Решение
for a in range(1,1000):
fl=1
for x in range(1,10000):
if not((x&57==0) or ((x&23==0)<=(not(x&a==0)))): fl=0;break
if fl:print(a);break
Ответ: 40
15.5 - Анализ неравенств на плоскости
5.1) Сколько существует целых значений А, при которых формула
((x ≤ 5) → (x⋅x < A)) ∧ ((y⋅y ≤ A) → (y ≤ 8))
тождественно истинна (то есть принимает значение 1 при любых целых неотрицательных значениях переменных x и y)?
Решение
k=0
for a in range(200):
fl=0
for x in range(200):
for y in range(200):
if (((x<=5)<=(x*x<a))and((y*y)<=a)<=(y<=8))==0: fl=1;break
if fl==1:break
if fl==0: print(a);k+=1
print('Всего - ',k)
Ответ: 55
5.2) Для какого наименьшего целого неотрицательного числа А выражение
(3x + 2y < A) ∨ (y > 10) ∨ (3y < x)
тождественно истинно, т.е. принимает значение 1 при любых целых неотрицательных x и y?
Решение
for a in range(200):
fl=0
for x in range(200):
for y in range(200):
if ((3*x+2*y<a)or(y>10)or(3*y<x))==0: fl=1;break
if fl==1:break
if fl==0: print(a)
Ответ: 111
5.3)(№ 5356 ЕГЭ-2022) Для какого наибольшего целого неотрицательного A выражение
(x + y ≤ 22) ∨ (y ≤ x – 6) ∨ (y ≥ A))
тождественно истинно, т.е. принимает значение 1 при любых целых неотрицательных x и y?
Решение
for a in range(100):
fl=1
for x in range(100):
for y in range(100):
if not((x + y <= 22) or (y <= x - 6) or (y >= a)):
fl=0
if fl: maxa=a
print(maxa)
Ответ: 9
5.4)(№ 7267) При каком наибольшем целом A найдутся такие целые неотрицательные x и y, при которых выражение
(4·x + y > 115) ∨ (x > 3·y) ∨ (x + 4·y < A)
ложно?
Решение
for a in range(1000):
fl=1
for x in range(50):
for y in range(120):
if not((4*x+y>115)or(x>3*y)or(x+4*y<a)):
maxa=a;fl=0
break
if maxa==a:break
if fl:break
print(maxa)
Ответ: 460
5.5)(№ 7266) При каком наибольшем целом A найдутся такие целые неотрицательные x и y, при которых выражение
(3·x + 2·y > 95) ∨ (4·x < 3·y) ∨ (x + 4·y < A)
ложно?
Решение
for a in range(1000):
fl=1
for x in range(50):
for y in range(120):
if not((3*x+2*y>95)or(4*x<3*y)or(x+4*y<a)):
maxa=a;fl=0
break
if maxa==a:break
if fl:break
print(maxa)
Ответ: 460
5.6)(№ 18140 В.Колчев) Для какого наибольшего целого неотрицательного числа А формула
(x - y ≥ 39) ∨ (y ≤ x) ∨ (y ≥ A - 20)
тождественно истинно (т.е. принимает значение 1) при любых целых положительных x и y.
Решение
for a in range(1000):
fl=1
for x in range(1,100):
for y in range(1,100):
if not(x-y>=39 or y<=x or y>=a-20): fl=0;break
if fl==0:break
if fl:maxa=a
print(maxa)
Ответ: 22
5.7)(№ 6047 ФИПИ 04.02.23) Для какого наибольшего целого неотрицательного числа А формула
(x > A) ∨ (y > A) ∨ (y – 2x + 12 ≠ 0)
тождественно истинна (т.е. принимает значение 1) при любых целых неотрицательных x и y.
Решение
for a in range(1000):
fl=1
for x in range(100):
for y in range(100):
if not(x>a or y>a or y-2*x+12!=0): fl=0;break
if fl==0:break
if fl:maxa=a
print(maxa)
Ответ: 5
15.6 - Логика и линейное программирование