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

Настя со­став­ля­ет 4-⁠бук­вен­ные коды из букв Н, А, С, Т, Я. Каж­дую букву можно ис­поль­зо­вать не более од­но­го раза, при этом нель­зя ста­вить рядом две глас­ные и две со­глас­ные. Сколь­ко раз­лич­ных кодов может со­ста­вить Настя?

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

Ре­ше­ние.

За­ме­тим, что по­сколь­ку и глас­ных и со­глас­ных боль­ше одной, слово может на­чи­нать­ся с как с со­глас­ной, так и с глас­ной. Также учтём то, что каж­дую букву нужно ис­поль­зо­вать толь­ко один раз.

По­ста­вим на пер­вое место любую из трёх со­глас­ных. На вто­рое  — любую из двух глас­ных. На тре­тье  — любую из двух остав­ших­ся со­глас­ных. На чет­вер­тое  — остав­шу­ю­ся глас­ную. По пра­ви­лу про­из­ве­де­ния, со­от­вет­ству­ю­щие ко­ли­че­ства спо­со­бов пе­ре­мно­жа­ем. Учи­ты­вая, что на пер­вое место можно по­ста­вить как со­глас­ную, так и глас­ную, Настя может со­ста­вить 2 · 3 · 2 · 2 · 1  =  24 раз­лич­ных кода.

 

Ответ: 24.

 

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

import itertools

alphabet = "НАСТЯ"

vol = "АЯ"

con = "НСТ"

ar = itertools.permutations(alphabet, 4) #Раз­ме­ще­ние

arl = []

for e in ar:

arl.append(list(e))

count = 0

for e in arl:

flag = True

for i in range(len(e)-1):

if (e[i] in vol and e[i+1] in vol) or (e[i] in con and e[i+1] in con):

flag = False

if flag:

count += 1

print(count)

 

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

begin

'Н, А, С, Т, Я'.Remove(', ').Permutations(4)

.where(s->'АЯ'.Permutations(2).all(d->d not in s))

.where(s->'НСТ'.Permutations(2).all(d->d not in s))

.Count.Print;

end.


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

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