Форум » Логические выражения » Задание 15 №213 не сходится ответ » Ответить

Задание 15 №213 не сходится ответ

Olga Sav1: Здравствуйте! Я написала программу для решения задачи 213Ж for a in range (50,101): f=1 for x in range (1,1000): f*=(((x&56!=0) <= (x&18!=0)) or (x&a!=0)) <=((x&18==0) and (x&a==0) and (x&43!=0)) if f: break if not f: print(a) break Программа выдает ответ 51, а в ответе 57. Где ошибка?

Ответов - 2

polyakovss: Здравстуйте, Olga Sav1! Обозначим В(x,a) = (((x&56!=0) <= (x&18!=0)) or (x&a!=0)) <=((x&18==0) and (x&a==0) and (x&43!=0)). Рассмотрим как работает в цикле f *= В(x,a): В(1,51) = False --> f = 1 * False = 0 --> f = 0 B(8,51) = True --> f = 0 * True = 0 --> f = 0 Поэтому 51 попадает в ответ. Правильно так:[pre2] for a in range (50,101): f=1 for x in range (1,1000): f *= not((((x&56!=0) <= (x&18!=0)) or (x&a!=0)) <=((x&18==0) and (x&a==0) and (x&43!=0))) if not f: break if f: print(a) break [/pre2]

ОльгаSav1: Поняла. Спасибо большое!



полная версия страницы