Тип 8 № 36021 

Перебор слов и системы счисления.Подсчет количества слов с ограничениями
i
Вася составляет 6-буквенные слова, в которых могут быть использованы только буквы В, И, Ш, Н, Я, причём буква В используется не более одного раза. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем. Слово не должно начинаться с буквы Ш и оканчиваться гласными буквами. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые может написать Вася?
Спрятать решениеРешение. Рассмотрим случай, когда буква В не встречается в слове. Тогда, поскольку слово не может начинаться с буквы Ш, на первом месте может стоять 3 буквы, на втором, третьем, четвёртом и пятом местах может стоить 4 буквы, и на последнем месте может стоять только 2 буквы, поскольку слово не может оканчиваться гласными. Всего 3 · 4 · 4 · 4 · 4 · 2 = 1536 слов.
Если буква В встречается в слове и стоит на первом месте, тогда получаем 1 · 4 · 4 · 4 · 4 · 2 = 512 слов.
Если буква В встречается в слове и стоит на втором месте, получаем 3 · 1 · 4 · 4 · 4 · 2 = 384 слова. Также можно разместить букву В на третьем, четвёртом и пятом местах, в любом из этих случаев получится по 384 слова. Следовательно, всего 384 · 4 = 1536 слов. Если буква В встречается в слове и стоит на последнем месте, получаем 3 · 4 · 4 · 4 · 4 · 1 = 768 слов.
Таким образом, Вася может составить 1536 + 512 + 1536 + 768 = 4352 слова.
Ответ: 4352.
Приведём другое решение на языке Python.
import itertools
alphabet = "ВИШНЯ"
ar = itertools.product(alphabet, repeat=6) #Размещение с повторением
arl = []
for i in ar:
arl.append(list(i))
count = 0
for e in arl:
if e.count("В") <= 1 and e[0] != "Ш" and e[-1] != "Я" and e[-1] != "И":
count += 1
print(count)
Приведём решение Сергея Донец на PascalABC.NET:
begin
'В, И, Ш, Н, Я'.Remove(', ').Cartesian(6)
.Where(s->s.CountOf('В')<=1)
.Where(s->s[1]<>'Ш')
.Where(s->s[^1]<>'И')
.Where(s->s[^1]<>'Я')
.Count.Print; // 4352
end.
Ответ: 4352