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

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

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

Ре­ше­ние.

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

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

 

Ответ: 480.

 

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

print(sum('УА' not in ''.join(p) and 'АУ' not in ''.join(p) for p in __import__('itertools').permutations('РУС­ЛАН')))

 

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

from itertools import permutations

c = 0

for p in permutations('РУС­ЛАН'):

if 'УА' not in ''.join(p) and 'АУ' not in ''.join(p):

c += 1

print(c)

 

 

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

begin

'Р, У, С, Л, А, Н'.Remove(', ').Permutations(6)

.Count(s->('УА'not in s)and('АУ'not in s))

.Print;

end.


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

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