Задания
Версия для печати и копирования в MS Word
Тип 8 № 18622
i

Де­мьян со­став­ля­ет 6-бук­вен­ные коды из букв Д, Е, М, Ь, Я, Н. Каж­дую букву нужно ис­поль­зо­вать ровно 1 раз, при этом Ь нель­зя ста­вить пер­вым и нель­зя ста­вить после глас­ной. Сколь­ко раз­лич­ных кодов может со­ста­вить Де­мьян?

Спрятать решение

Ре­ше­ние.

Пусть буква Г обо­зна­ча­ет глас­ную, а буква С  — со­глас­ную. Тогда в слове на любой по­зи­ции могут быть ис­поль­зо­ва­ны глас­ные Г, со­глас­ные С и кон­струк­ция СЬ, обо­зна­ча­ю­щая какую-либо со­глас­ную с мяг­ким зна­ком. Тогда, на­при­мер, при ис­поль­зо­ва­нии в ка­че­стве со­глас­ной буквы в кон­струк­ции СЬ, буквы Д можно будет по­лу­чить 5 · 4 · 3 · 2 · 1  =  120 ва­ри­ан­тов слов. Для осталь­ных двух со­глас­ных букв также по­лу­ча­ем по 120 ва­ри­ан­тов. Таким об­ра­зом, всего можно со­ста­вить 3 · 120  =  360 раз­лич­ных кодов.

 

Ответ: 360.

 

При­ведём дру­гое ре­ше­ние на языке Python.

import itertools

alphabet = "ДЕ­МЬЯН"

vol = 'ЕЯ'

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)):

if (e[0] == "Ь") or (e[i] == "Ь" and e[i-1] in vol):

flag = False

if flag: count += 1

print(count)

 

При­ведём ре­ше­ние Сер­гея Ка­лу­ги­на на языке Python.

from itertools import permutations

cnt=0

a = permutations('ДЕ­МЬЯН',6)

for i in a:

p=''.join(i)

if p[0]!='Ь' and (('ЕЬ' not in p) and ('ЯЬ' not in p)):

cnt+=1

print(cnt)

 

 

При­ведём ре­ше­ние Сер­гея Донец на языке PascalABC.NET.

begin

'Д, Е, М, Ь, Я, Н'.Remove(', ').Permutations(6)

.Count(s->(s[1]<>'Ь')and('ЕЬ'not in s)and('ЯЬ'not in s))

.Print;

end.


Аналоги к заданию № 18491: 18622 Все

Раздел кодификатора ФИПИ: 1.6.1 Фор­ма­ли­за­ция по­ня­тия ал­го­рит­ма