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

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

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

Ре­ше­ние.

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

 

Ответ: 48.

 

При­ведём дру­гое ре­ше­ние.

Сна­ча­ла найдём общее ко­ли­че­ство воз­мож­ных слов, учи­ты­вая толь­ко то огра­ни­че­ние, что Ь нель­зя ста­вить пер­вым. На пер­вое место можно по­ста­вить любую букву, кроме Ь, по­это­му общее ко­ли­че­ство воз­мож­ных слов рав­ня­ет­ся 4 · 4 · 3 · 2 · 1  =  96. Пусть буква Г обо­зна­ча­ет глас­ную, а буква С  — со­глас­ную. Тогда нель­зя со­ста­вить слова вида: ГЬГСС, ГЬСГС, ГЬССГ, ГГЬСС, ГСГЬС, ГССГЬ, СГГЬС, ССГГЬ, СГСГЬ, СГЬСГ, ССГЬГ, СГЬГС. Под­счи­та­ем ко­ли­че­ство слов пер­во­го вида: 2 · 1 · 1 · 2 · 1  =  4. Слов дру­гих видов столь­ко же. Всего слов, ко­то­рые нель­зя со­ста­вить, 12 · 4  =  48. Зна­чит, всего воз­мож­ных слов 96 − 48  =  48.

 

При­ведём дру­гое ре­ше­ние на языке 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)):

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

flag = False

if flag:

count += 1

print(count)

 

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

a1=['о','л','г','а']

a=['о','л','г','а','ь']

k=0

for b1 in a1:

for b2 in a:

for b3 in a:

for b4 in a:

for b5 in a:

s=b1+b2+b3+b4+b5

if s.count('о')==1 and s.count('л')==1 and s.count('ь')==1 and s.count('г')==1 and s.count('а')==1 :

if not('оь') in s and not('аь') in s:

k+=1

print(k)

 

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

from itertools import permutations

count = 0

for s in permutations('ОЛЬГА', 5):

slovo = ''.join(s)

if slovo[0] != 'Ь':

if 'АЬ' not in slovo and 'ОЬ' not in slovo:

count += 1

print(count)

 

 

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

begin

'О, Л, Ь, Г, А'.Remove(', ').Permutations(5)

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

.Print;

end.


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

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