Автор | Сообщение |
|
Отправлено: 25.01.21 19:17. Заголовок: Задание 15 №213 не сходится ответ
Здравствуйте! Я написала программу для решения задачи 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
[только новые]
|
|
|
Отправлено: 26.01.21 05:08. Заголовок: Ответ
Здравстуйте, 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 попадает в ответ. Правильно так: 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
|
|
|
|
Отправлено: 26.01.21 12:09. Заголовок: Поняла. Спасибо боль..
Поняла. Спасибо большое!
|
|
|
|