Автор | Сообщение |
|
Отправлено: 17.01.23 12:18. Заголовок: Не понимаю в чем проблема
Определите количество девятизначных чисел, записанных в девятеричной системе счисления. При этом числа не могут начинаться на 2, 4, 6 и не содержат сочетание цифр 7777. from itertools import product numbers = product('012345678', repeat=9) k = 0 for n in numbers: numb = ''.join(n) if [0] != '2' or [0] != '4' or [0] != '6': if '7777' not in numb: k += 1 print(k, numb) не понимаю в чем проблема и есть ли она вообще, слишком долго выводится ответ и меня это пугает
|
|
|
Ответов - 2
[только новые]
|
|
|
Отправлено: 17.01.23 19:08. Заголовок: Перебирается достато..
Перебирается достаточно большой диапазон. Кстати, откуда эта задача? В вашем решении есть два недочета: не проверяете, что число девятизначное, и для проверки с чего число не начинается, необходимо использовать and. Исправленная версия вашего решения (добавлен код для измерения времени) from itertools import product from time import time start = time() numbers = product('012345678', repeat=9) k = 0 for n in numbers: numb = ''.join(n) if numb[0] != '0' and numb[0] != '2' and numb[0] != '4' and numb[0] != '6': if '7777' not in numb: k += 1 print(k) print(time() - start) Работает примерно 3 минуты 215031680 185.30152225494385 Можно сократить время выполнения в 2 раза, если join делать только для проверки на 7777 from itertools import product from time import time start = time() numbers = product('012345678', repeat=9) k = 0 for n in numbers: if n[0] not in '0246' and '7777' not in ''.join(n): k += 1 print(k) print(time() - start) 215031680 99.20958995819092
|
|
|
|
Отправлено: 19.01.23 14:43. Заголовок: Спасибо, а задача из..
Спасибо, а задача из пробника 23 года скинул учитель.
|
|
|
|