Тип 8 № 29195 

Перебор слов и системы счисления.Подсчет количества слов с ограничениями
i
Регина составляет 5-буквенные коды из букв Р, Е, Г, И, Н, А. Буквы Р и Г нужно обязательно использовать ровно по одному разу, букву Н можно использовать один раз или не использовать совсем, остальные буквы можно использовать произвольное количество раз или не использовать совсем. Сколько различных кодов может составить Регина?
Спрятать решениеРешение. Найдём все слова, в которых Р и Г будут на первом и втором местах, тогда остаётся 3 позиции для размещения букв Е, И, А, Н.
1. Если 3 позиции занимают буквы Е, И, А, при этом код не содержит буквы Н, то 3 · 3 · 3 = 27 вариантов.
2. Если 3 позиции занимают буквы Е, И, А и Н, с учётом того, что буква Н может использоваться только один раз, то 3 · 9 = 27 вариантов.
Тогда количество слов, в которых буквы Р и Г стоят на первом и втором месте: 27 + 27 = 54.
Буквы Р и Г могут использоваться ровно один раз. Всего возможных вариантов расположения букв Р и Г, не считая расположения на первых двух позициях, может быть 2 · (4 + 3 + 2 + 1) = 20.
Тогда количество различных кодов: 54 · 20 = 1080.
Приведем другое решение.
1. Найдем количество слов, в которых буква Н используется один раз.
Буква Р может стоять на любой из пяти позиций, буква Г может стоять на любой из четырех оставшихся позиций, буква Н может стоять на любой из трех оставшихся позиций. Две свободные позиции могут занимать буквы Е, И, А в любых комбинациях. Следовательно, количество слов равно 5 · 4 · 3 · 32 = 540.
2. Найдем количество слов, в которых не используется буква Н.
Буква Р может стоять на любой из пяти позиций, буква Г может стоять на любой из четырех оставшихся позиций. Три свободные позиции могут занимать буквы Е, И, А в любых комбинациях. Следовательно, количество слов равно 5 · 4 · 33 = 540.
Общее количество слов составит 540 + 540 = 1080.
Ответ: 1080.
Приведём другое решение на языке Python.
import itertools
alphabet = "РЕГИНА"
ar = itertools.product(alphabet, repeat=5) #Размещение с повторением
arl = []
for i in ar:
arl.append(list(i))
count = 0
for e in arl:
if e.count("Г") == 1 and e.count("Р") == 1 and e.count("Н") <= 1:
count += 1
print(count)
Ответ: 1080