
Матвей составляет 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.
PDF-версии: