Определите количество девятеричных пятизначных чисел...
Задание
Определите количество девятеричных пятизначных чисел, в записи которых ровно две цифры 3, при этом никакая нечётная цифра не стоит рядом с цифрой 2.
Решение
cnt = 0
for x in product('012345678', repeat=5):
s = ''.join(x)
if s[0] != '0' and s.count('3') == 2:
for c in '357':
s = s.replace(c, '1')
if ('12' not in s) and ('21' not in s):
cnt += 1
print(cnt)
Разбор кода.
Функция product('012345678', repeat=5) перебирает все возможные пятёрки цифр от 0 до 8 — это все пятизначные числа в девятеричной системе, включая те, что начинаются с нуля.
Условие s[0] != '0' отсекает числа с ведущим нулём, а s.count('3') == 2 оставляет только записи ровно с двумя тройками.
Затем все нечётные цифры (3, 5, 7) заменяются на «1» — это удобный приём: после такой замены проверка «никакая нечётная цифра не стоит рядом с 2» сводится к простому поиску подстрок «12» и «21». Если таких пар в строке нет, счётчик увеличивается на единицу.
Ключевой момент: замена нечётных цифр на «1» не меняет взаимное расположение цифр, поэтому проверка соседства с двойкой остаётся корректной, но код становится проще.
Ответ: 3352