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

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

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

Ре­ше­ние.

Найдём все слова, в ко­то­рых учи­ты­ва­ет­ся усло­вие, что каж­дую букву нужно ис­поль­зо­вать ровно один раз: 5 · 4 · 3 · 2 · 1  =  120.

Слов, в ко­то­рых глас­ные стоят рядом на пер­вом и вто­ром месте,  — 2 · 1 · 3 · 2 · 1  =  12. Также глас­ные могут сто­ять рядом на вто­ром и тре­тьем месте, на тре­тьем и четвёртом, на четвёртом и пятом. Зна­чит, всего слов, в ко­то­рых глас­ные стоят рядом,  — 12 · 4  =  48. Таким об­ра­зом, ответ  — 120 − 48  =  72.

 

Ответ: 72.

 

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

import itertools

alphabet = "СВЕТА"

vol = "ЕА"

ar = itertools.permutations(alphabet) #Пе­ре­ста­нов­ка

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:

flag = False

if flag:

count += 1

print(count)

 

При­ведём ре­ше­ние Ильи Ан­дри­а­но­ва на языке Python.

from itertools import permutations

count = 0

for s in permutations('СВЕТА', 5):

slovo = ''.join(s)

if all(pair not in slovo for pair in 'ЕА АЕ'.split()):

count += 1

print(count)

 

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

begin

'С, В, Е, Т, А'.Remove(', ').Permutations(5)

.where(s->('ЕА' not in s)and('АЕ' not in s))

.Count.Print;

end.


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

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