15 - Логические выражения
и множества
Источники:
сайт Полякова (https://kpolyakov.spb.ru/)
15.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
15.2 - Задачи на множества чисел
15.3 - Задачи с делителями
9) (№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
9) (№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
15.4 - Задачи с битовыми логическими операциями
7) (№ 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
8) (№ 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
15.5 - Анализ неравенств на плоскости
2) Сколько существует целых значений А, при которых формула
((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
3) Для какого наименьшего целого неотрицательного числа А выражение
(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
4)(№ 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)(№ 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
6)(№ 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
15.6 - Логика и линейное программирование