#базовое задание
for a in range(1,1500):
    if all(((x > 56) or (y >= x) or (3 * x -y < a)) for x in range(0,10000) for y in range(0,10000)):
        print(a)
        break


#поразраядная конъюнкция 
#14348
for a in range(1,1000):
    if all((x & 47 == 0) or ((x & 13 == 0) <= (x & a != 0)) for x in range(1,1000)):
        print(a)
        break

#ДЭЛЫ
#14657
for a in range(1,1000):
    if all(((x % 17 != 0) or (x % 12 != 0)) <= (x % a != 0) for x in range(1,1000)):
        print(a)
        break

#отрезки
#17528

for x in [k*0.25 for k in range(-10000,10001)]:
    a = 0
    p = 15 <= x <= 40
    q = 21 <= x <= 63
    f = (p <= ((q and (not(a))) <= (not(p))))
    if f != 1:
        print(x)


# у нас есть две ключевые переменные
# f и А
#
# f должна равняться тому, чему равняется выражение по условию. Например сказано, что выражение тождественно истинно, тогда
# f = 1
# иначе если сказано что оно тождественно ложно, тогда
# f = 0
#
# "A" будет зависеть от того, ищем мы минимальный или максимальный отрезок
# минимум? A = 0
# максимум? А = 1
#
# и дальше в условии ты пишешь
# if f != 1 если ищешь минимальный
# if f == 1 если ищешь максимальный

Автор шпоры по отрезкам "информатик Родя"

def f(x):
    b = 66 <= x <= 75 #отрезок B
    c = 71 <= x <= 85 #отрезок C
    a = a1 <= x <= a2 #не меняется
    return (not (a)) <= (b == c) #условие из задачи

ox = [y for x in (66,75,71,85) for y in (x, x + 0.01, x - 0.01)] #меняем только 1ю часть с значениями отрезков (66,75,71,85)

m = []
for a1 in ox:
    for a2 in ox:
        if a2 > a1 and all(f(x) == 1 for x in ox): #f(x) == 1 - если просят истинно , f(x) == 0 - если просят ложь
            m.append(a2-a1) #длинны отрезков подходящих под условие
print(min(m)) #max - если просят максимальную длинну