Форум » Кодирование и декодирование информации » Не понимаю в чем проблема » Ответить

Не понимаю в чем проблема

Sqwe11zy: Определите количество девятизначных чисел, записанных в девятеричной системе счисления. При этом числа не могут начинаться на 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

MrAndrewson: Перебирается достаточно большой диапазон. Кстати, откуда эта задача? В вашем решении есть два недочета: не проверяете, что число девятизначное, и для проверки с чего число не начинается, необходимо использовать and. Исправленная версия вашего решения (добавлен код для измерения времени) [pre2]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)[/pre2] Работает примерно 3 минуты 215031680 185.30152225494385 Можно сократить время выполнения в 2 раза, если join делать только для проверки на 7777 [pre2]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)[/pre2] 215031680 99.20958995819092

Sqwe11zy: Спасибо, а задача из пробника 23 года скинул учитель.



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