Тип 8 № 33087 

Перебор слов и системы счисления.Подсчет количества слов с ограничениями
i
Игорь составляет 8-буквенные коды из букв И, Г, О, Р, Ь. Буквы О и Ь должны встречаться в коде ровно по одному разу, при этом буква Ь не может стоять на первом месте. Остальные допустимые буквы могут встречаться произвольное количество раз или не встречаться совсем. Сколько различных кодов может составить Игорь?
Спрятать решениеРешение. Пусть О стоит на первом месте, а на втором месте стоит буква Ь. Тогда на остальных шести позициях может стоять любая из трёх оставшихся букв. То есть всего
комбинаций. Когда О стоит на первом месте, есть 7 вариантов расположения буквы Ь. То есть имеем
комбинации.
Если О стоит на втором месте, то на первом месте можно использовать любую из оставшихся букв, кроме Ь. Букву Ь можно поставить в 6 разных позиций. Таким образом, получится
комбинаций.
Такие же рассуждения, если О стоит на третьем, четвёртом, пятом, шестом, седьмом и восьмом местах.
То есть всего получается
вариантов.
Ответ: 35 721.
Приведём другое решение на языке Python.
import itertools
alphabet = "ИГОРЬ"
ar = itertools.product(alphabet, repeat=8) #Размещение с повторением
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[0] != "Ь":
count += 1
print(count)
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'И, Г, О, Р, Ь'.Remove(', ')
.Cartesian(8)
.where(s->s[1]<>'Ь')
.Count(s->(s.CountOf('О')=1)and(s.CountOf('Ь')=1) )
.Print;//35721
end.
Ответ: 35721