Определите количество семизначных чисел, записанных в пятеричной системе счисления, в записи которых ровно три цифры 3, при этом никакая четная цифра не стоит рядом с цифрой 1.
Решение через циклы
s = ’01234’ # наше слово
m = [’12’, ’21’, ’10’, ’01’, ’14’, ’41’] # запрещенные комбинации, где 1 рядом с чётной цифрой
k = 0 # итоговый счётчик
for a in ’1234’: # перебор для первого места без 0
for b in s:
for c in s:
for d in s:
for e in s:
for f in s:
for g in s:
n = a+b+c+d+e+f+g # формируем слово
# если в числе цифр 3 ровно 3 штуки, а также, что ни одна запрещенная комбинация не находится в слове
if n.count(’3’) == 3 and all(n.count(i) == 0 for i in m):
k += 1
print(k) # вывод ответа
Решение через itertools
from itertools import product # импортируем product из модуля itertools.
count = 0 # итоговый счётчик
m = [’12’, ’21’, ’10’, ’01’, ’14’, ’41’] # запрещенные комбинации, где 1 рядом с чётной цифрой
for x in product(’01234’,repeat = 7):
s = ’’.join(x) # формируем слово
# если число не начинается с 0, а также цифр 3 ровно 3 штуки, а также, что ни одна запрещенная комбинация не находится в слове
if s[0] != ’0’ and s.count(’3’) == 3 and all(i not in s for i in m):
count += 1
print(count) # вывод ответа
Ответ: 3691