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

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

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

Ре­ше­ние.

За­ме­тим, что ал­фа­вит со­сто­ит из 6 букв: Г, Е, О, Р, И, Й. Каж­дая буква долж­на встре­чать­ся в коде один раз, за ис­клю­че­ни­ем буквы Г  — она может встре­чать­ся в коде два раза, но не долж­на сто­ять в коде рядом с дру­гой бук­вой Г.

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

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

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

Таким об­ра­зом, Ге­ор­гий может со­ста­вить 600 + 480 + 360 + 240 + 120  =  1800 кодов.

 

Ответ: 1800.

 

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

import itertools

alphabet = "ГЕ­ОР­ГИЙ"

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

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.

from itertools import permutations

count = set()

for s in permutations('ге­ор­гий'):

slovo = ''.join(s)

if 'гг' not in slovo:

count.add(slovo)

print(len(count))


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