Определите количество шестизначных чисел, записанных в пятеричной системе счисления, учитывая, что числа не могут начинаться с цифр 1 и 2 и не должны содержать сочетания цифр 103 и 3304 одновременно.
Решение руками
Найдем все шестизначные числа, которые не начинаются с 1 и 2 (так же помним что числа не могут начинаться с 0): .
Заметим что число в котором встречается сочетания цифр 103 и 3304 одновременно всего одно — 103304, но оно начинается с 1, поэтому оно уже не вошло в комбинации. Следовательно ответ 6250.
Решение через циклы
a = ’01234’
count = set()
for x1 in ’34’:
for x2 in a:
for x3 in a:
for x4 in a:
for x5 in a:
for x6 in a:
s = x1+x2+x3+x4+x5+x6
# в списке хранится True или False, находится ли определенная подстрока в s или нет.
# Если сумма списка равна 2, значит, в списке два True - такое число нам не подходит, так как, две комбинации в числе находятся одновременно
# True - 1. False - 0.
m = sum([’103’ in s, ’3304’ in s])
if m < 2:
count.add(s)
print(len(count))
Решение через itertools
from itertools import product
count = set()
for x in product(’01234’,repeat = 6):
s = ’’.join(x)
if s[0] not in ’012’:
# в списке хранится True или False, находится ли определенная подстрока в s или нет.
# Если сумма списка равна 2, значит, в списке два True - такое число нам не подходит, так как, две комбинации в числе находятся одновременно
m = sum([’103’ in s,’3304’ in s])
if m < 2:
count.add(s)
print(len(count))