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

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

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

Ре­ше­ние.

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

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

 

Ответ: 48.

 

При­ведём дру­гое ре­ше­ние на языке 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 Фор­ма­ли­за­ция по­ня­тия ал­го­рит­ма