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

Свет­ла­на со­став­ля­ет коды из букв сво­е­го имени. Код дол­жен со­сто­ять из 8 букв, и каж­дая буква в нём долж­на встре­чать­ся столь­ко же раз, сколь­ко в имени Свет­ла­на. Кроме того, оди­на­ко­вые буквы в коде не долж­ны сто­ять рядом. Сколь­ко кодов может со­ста­вить Свет­ла­на?

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

Ре­ше­ние.

За­ме­тим, что ал­фа­вит со­сто­ит из 7 букв: С, В, Е, Т, Л, А, Н. Каж­дая буква долж­на встре­чать­ся в коде один раз, за ис­клю­че­ни­ем буквы А  — она может встре­чать­ся в коде два раза, но не долж­на сто­ять в коде рядом с дру­гой бук­вой А.

Пусть одна буква А стоит на пер­вом месте, а вто­рая буква А стоит на тре­тьем месте, тогда всего таких кодов будет 1 · 6 · 1 · 5 · 4 · 3 · 2 · 1  =  720. По­сколь­ку вто­рую букву А в этом слу­чае можно раз­ме­стить ещё на 5 дру­гих по­зи­ци­ях, всего слов, в ко­то­рых одна из букв А стоит на пер­вом месте, будет 6 · 720  =  4320.

Пусть одна буква А стоит на вто­ром месте, а вто­рая буква А стоит на четвёртом месте, тогда всего таких кодов будет 6 · 1 · 5 · 1 · 4 · 3 · 2 · 1  =  720. По­сколь­ку вто­рую букву А в этом слу­чае можно раз­ме­стить ещё на 4 дру­гих по­зи­ци­ях, всего слов, в ко­то­рых одна из букв А стоит на вто­ром месте, будет 5 · 720  =  3600.

За­ме­тим, что пе­ре­дви­гая первую букву А на сле­ду­ю­щую по­зи­цию, ко­ли­че­ство мест, на ко­то­рых может сто­ять вто­рая буква А, умень­ша­ет­ся на 1. Тогда для слу­ча­ев, когда буква А будет сто­ять на тре­тьей, четвёртой, пятой и ше­стой по­зи­ци­ях, ко­ли­че­ство кодов равно 720 · 4  =  2880, 720 · 3  =  2160, 720 · 2  =  1440 и 720 · 1  =  720 со­от­вет­ствен­но.

Таким об­ра­зом, Свет­ла­на может со­ста­вить 4320 + 3600 + 2880 + 2160 + 1440 + 720  =  15120 кодов.

 

Ответ: 15120.

 

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

import itertools

alphabet = "СВЕТ­ЛА­НА"

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

arl = []

for e in ar:

arl.append(list(e))

a = set()

for e in arl:

flag = True

s = ""

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

s += e[i]

if e[i] == e[i + 1]:

flag = False

if flag:

a.add(s)

print(len(a))

 

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

q = 0

sett = set()

for i1 in 'СВЕТ­ЛА­НА':

for i2 in 'СВЕТ­ЛА­НА':

for i3 in 'СВЕТ­ЛА­НА':

for i4 in 'СВЕТ­ЛА­НА':

for i5 in 'СВЕТ­ЛА­НА':

for i6 in 'СВЕТ­ЛА­НА':

for i7 in 'СВЕТ­ЛА­НА':

for i8 in 'СВЕТ­ЛА­НА':

a = i1+i2+i3+i4+i5+i6+i7+i8

if a.count('А') == 2 and a.count('С') == 1 and a.count('В') == 1 and a.count('Е') ==1 and a.count('Т')==1 and a.count('Л') == 1 and a.count('Н') == 1:

if i1 != i2 and i2 != i3 and i3 != i4 and i4 != i5 and i5 != i6 and i6 != i7 and i7 != i8 and (not(a in sett)):

sett.add(a)

q += 1

print(q)


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