Задание №8 — Комбинаторика
Все пятибуквенные слова, составленные из букв И, Н, Т, Е, Г, Р, А, Л, записаны в алфавитном порядке и пронумерованы.
1. ААААА
2. ААААГ
3. ААААЕ
4. ААААИ
5. ААААЛ
6. ААААН
7. ААААР
...
Определите в этом списке количество слов с нечётными номерами, которые не начинаются с буквы Т и при этом содержат в своей записи только одну или ровно две буквы Н.
Правильный ответ
5992
Пояснение
Решение:
Букв восемь, в алфавитном порядке: А, Г, Е, И, Л, Н, Р, Т. Слово с номером — это число в восьмеричной системе (А=0, Г=1, Е=2, И=3, Л=4, Н=5, Р=6, Т=7).
Степени при чётны, поэтому чётность числа задаётся только последней цифрой. Номер нечётный число чётно последняя буква имеет чётный код, то есть слово оканчивается на А, Е, Л или Р (4 варианта). Заметим, что буква Н среди них не встречается, значит все Н находятся среди первых четырёх букв.
Осталось посчитать наборы из четырёх первых букв: первая не Т, букв Н ровно одна или ровно две.
- Ровно одна Н: если Н стоит первой — ; если Н на одной из позиций 2–4 — (первая буква не Н и не Т, то есть 6 вариантов). Всего .
- Ровно две Н: если первая буква Н, вторая Н на одной из позиций 2–4 — ; если первая буква не Н (6 вариантов), обе Н среди позиций 2–4 — . Всего .
Итого .
from itertools import product
count = 0
for n, w in enumerate(product('АГЕИЛНРТ', repeat=5), 1):
s = ''.join(w)
if n % 2 == 1 and s[0] != 'Т' and s.count('Н') in (1, 2):
count += 1
print(count)
Ответ: 5992