Задание №8 — Комбинаторика
Все пятибуквенные слова, составленные из букв Ф, Л, А, М, И, Н, Г, О, записаны в алфавитном порядке и пронумерованы.
1. ААААА
2. ААААГ
3. ААААИ
4. ААААЛ
5. ААААМ
6. ААААН
7. ААААО
...
Определите в этом списке количество слов с нечётными номерами, которые не начинаются с буквы Н и при этом содержат в своей записи не более одной буквы О.
Правильный ответ
11907
Пояснение
Решение:
Букв восемь, в алфавитном порядке: А, Г, И, Л, М, Н, О, Ф. Слово с номером — это число в восьмеричной системе (А=0, Г=1, И=2, Л=3, М=4, Н=5, О=6, Ф=7).
Все степени при чётны, поэтому чётность числа определяется только его последней цифрой. Номер нечётный число чётно последняя буква слова имеет чётный код, то есть слово оканчивается на А, И, М или О.
Считаем слова, у которых последняя буква — одна из А, И, М, О, первая — не Н, и букв О не больше одной.
- Последняя буква О. Тогда среди первых четырёх букв буквы О нет: первая — любая из 6 (не Н и не О), остальные три — любые из 7 (не О). Это слов.
- Последняя буква А, И или М (3 варианта). Среди первых четырёх букв не более одной О:
ни одной О — ;
ровно одна О: либо первая буква О — , либо О на одной из позиций 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('О') <= 1:
count += 1
print(count)
Ответ: 11907