Матвей составляет 6-буквенные коды из букв М, А, Т, В, Е, Й. Каждую букву нужно использовать ровно
Сначала найдём общее количество возможных слов. Поскольку на первое место можно поставить любую букву,
Ответ: 504.
Приведём другое решение на языке Python.
import itertools
alphabet = "МАТВЕЙ"
ar = itertools.permutations(alphabet) #Перестановка
arl = []
for i in ar:
arl.append(list(i))
count = 0
for e in arl:
flag = True
for i in range(len(e) - 1):
if e[0] == 'Й' or (e[i] == 'А' and e[i + 1] == 'Е'):
flag = False
if flag == True: count += 1
print(count)
Приведём решение Михаила Глинский на языке Python.
al='МАТВЕЙ'
k=0
for b1 in 'МАТВЕ':
for b2 in al:
for b3 in al:
for b4 in al:
for b5 in al:
for b6 in al:
s=b1+b2+b3+b4+b5+b6
bb=set(s)
if len(s)==len(bb) and s.count('АЕ')==0:
k+=1
print(k)
Приведём другое решение на языке Python.
def func(not_used, pre=''):
if 'АЕ' in pre: # Не должно включать АЕ
return 0
if pre[:1] == 'Й': # Не должно начинаться с Й
return 0
if not_used == '': # Если все буквы использованы
return 1 # Считаем как один из вариантов
count = 0
for letter in not_used:
count += func(not_used.replace(letter, ''), pre + letter)
return count
print(func('МАТВЕЙ'))
Приведём решение Юрия Красильникова на языке Python.
import itertools
codes = [''.join(p) for p in itertools.permutations('МАТВЕЙ')]
codes2 = [w for w in codes if w[0]!='Й' and not 'АЕ' in w]
print(len(codes2))
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'МАТВЕЙ'.Permutations
.Count(s->(s[1]<>'Й')and('АЕ' not in s))
.Print;
end.

