Автор | Сообщение |
|
Отправлено: 16.02.21 14:17. Заголовок: задание ЕГЭ 15, №385
#385 for a in range (200,2000): f=0 for x in range (10,1000): for y in range (10,1000): if (((x%a==0 and x%45==0)<=(x%162==0))and a>200)==0: f=7 if f==0: print (a) При запуске этот код выдаёт все числа от 201. Упростив выражение, получили: (¬ДЕЛ(x, A) v ¬ДЕЛ(x, 45) v ДЕЛ(x, 162))& ( A > 200). Условие (A > 200) обязательно должно выполняться, а в левой части выражения нам достаточно выполнения одного из трёх условий?! Ну и почему тогда ответом не может быть 201?
|
|
|
Ответов - 5
[только новые]
|
|
|
| Администратор
|
Сообщение: 2461
|
|
Отправлено: 16.02.21 14:21. Заголовок: mdziova пишет: Ну и ..
mdziova пишет: цитата: | Ну и почему тогда ответом не может быть 201? |
|
Проверьте при x = 3015.
|
|
|
|
Отправлено: 16.02.21 14:58. Заголовок: Хорошо, проясняется!..
Хорошо, проясняется! Как это исправить в коде?
|
|
|
|
Отправлено: 16.02.21 16:30. Заголовок: Задавать бОльший диа..
Задавать бОльший диапазон перебора x и y.
|
|
|
|
Отправлено: 25.03.21 02:36. Заголовок: cabanov.alexey пишет..
cabanov.alexey пишет: цитата: | Задавать бОльший диапазон перебора x и y. |
| а, для чего здесь нужен y? mdziova пишет: цитата: | for a in range (200,2000): f=0 for x in range (10,1000): for y in range (10,1000): #для чего данная строка, если логическое выражение содержит только X и А if (((x%a==0 and x%45==0)<=(x%162==0))and a>200)==0: f=7 if f==0: print (a) |
|
|
|
|
|
Отправлено: 25.03.21 02:53. Заголовок: mdziova пишет: Как ..
mdziova пишет: цитата: | Как это исправить в коде? |
| 1 - уберите данную строку - for y in range (10,1000):, тем самым, значительно сократите время на вычисление 2 - значение x поднимите как минимум до 15000 или выше 3 - если долго будет думать, добавьте под командой f=7;break а, если нет желания наблюдать длинный список чисел от 324 до 15000 - завершите программу так: print (a);break
|
|
|
|