Войти
или
Зарегистрироваться
Маркетплейс
Курсы
Учебник
Учебник 2.0
ОГЭ/ЕГЭ
Олимпиады
Рубрикатор
Компилятор
Онлайн Компилятор
Компилятор Python (lite)
Редактор HTML Code
Статья Автор:
Лебедев Дмитрий
Разбор HARD заданий типа КЕГЭ-15
def fax(A,x,n,m): return (x % A != 0) or ( x % n != 0) or (x % m == 0) def fa (A, n, m, t): for x in range(1, t) : if fax(A,x, n,m) == False : return False return True n, m = 2205, 2800 t = (n * m) print('t=', t) A = 0 while 1 : A += 1 if fa (A,n,m,t) : print(A) break
×
Возможная ошибка - попытка положить t = n*m/НОД(n,m) - этого делать нельзя, так как у нас одно сравнение != 0, а другое == 0
def fax(A,x): p = (x|42) >64 q = (x|34) <= 102 t = not( (x|A) < 70) return (p and q) <= t def fa (A, t): for x in range(t) : if fax(A,x) == False : return False return True t = 128 A = -1 k = 5 while k > 0 : A += 1 if fa (A,t) : print(A, k) k -=1
×
Для t достаточно взять первую степень числа 2, превосходящую все числа задания или значение 70, так как x|A >= x, а значит not((x|A) < 70 ) будет ИСТИНА
В решении выводим 5 подходящих значений А
def fax(A,x): p = ((x & A) != 0) q = (((x & 17) == 0) and ((x & 5) == 0)) t = (x & 3 != 0) return (p <= (q <= t)) def fa (A, t): for x in range(t) : if fax(A,x) == False : return False return True A = 33 t = 1024 k = 5 while k > 0 : A -= 1 if fa (A,t) : print(A, k) k -=1 print(fa(23,5),'*')
×
Главное правильно ввести формулу. Для е возьмем степень двойки, включающую все числа примера. Это же значение можно взять и для А.
def fax(A,R,x): p = (((x & 108) == 0) or ((x & 60) == 0)) q = ((x & A) == 0) t = ((x & R) == 0) return (p <= q) or t def fa (A, R, t): for x in range(t) : if fax(A,R,x) == False : return False return True t = 256 z =set() for R in range (1,t) : fl = True for A in range(1,t) : if fa (A,R,t) == False : fl = False if fl : z.add(R) print(len(z)) print(z)
×
Главное все формулы правильно оформить и понять, что x и A достаточно перебирать до степени "поглащающей 108 и 60"
Можно вначале определить все A, для которых первая часть формулы не тождественно ИСТИНА
def fax(A,x): p = (((x & 108) == 0) or ((x & 60) == 0)) q = ((x & A) == 0) return (p <= q) def fa (A, t): for x in range(1,t) : if fax(A, x) == False : z. add(x) return True t = 256 z =set() for A in range (1,t) : fa (A,t) print(len(z)) print(z) y = set() for R in range(1,t) : fl = True for x in z : if (x & R ) != 0 : fl = False if fl : y.add(R) print(len(y)) print(y)
×
Печать