Условие: № 6040 ФИПИ 04.02.23 (Уровень: Базовый)
Определите количество шестизначных чисел, записанных в семеричной системе счисления, в записи которых ровно одна цифра 6, при этом чётные и нечётные цифры чередуются.
from itertools import *
count = 0
for s in product('0123456', repeat=6):
slovo = ''.join(s)
if slovo[0] != '0' and slovo.count('6') == 1:
if all(''.join(x) not in slovo for x in product('0246', repeat=2)):
if all(''.join(x) not in slovo for x in product('135', repeat=2)):
count += 1
print(count)
- from itertools import *- Импортируем все функции из модуля itertools, через оператор раскрытия *.
- count = 0 - Инициализируем переменную count со значением 0, для подсчета подходящих по условию слов.
- for s in product('0123456', repeat=6): - Создаём цикл по всем возможным комбинациям длиной 6 из символов '0123456' с помощью функции product из модуля itertools.
- slovo = ''.join(s) - Соединяем символы из текущей комбинации кортежа s в строку slovo.
- if slovo[0] != '0' and slovo.count('6') == 1: - Проверяем, что первый символ в строке не равен '0' и символ '6' только один.
- if all(''.join(x) not in slovo for x in product('0246', repeat=2)): - Через функцию all() проверяем, что для всех комбинаций длины 2 из символов '0246', соединенных в строку x, эта строка не является подстрокой в slovo (не находится внутри).
- if all(''.join(x) not in slovo for x in product('135', repeat=2)): - Аналогичное действие для всех комбинаций длины 2 из символов '135', соединенных в строку x.
- count += 1 - Увеличиваем значение переменной count на 1, если все условия выполняются.
- print(count) - Выводим значение переменной count на экран.