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

Борис со­став­ля­ет 6-⁠бук­вен­ные коды из букв Б, О, Р, И, С. Буквы Б и Р нужно обя­за­тель­но ис­поль­зо­вать ровно по од­но­му разу, букву С можно ис­поль­зо­вать один раз или не ис­поль­зо­вать со­всем, буквы О и И можно ис­поль­зо­вать про­из­воль­ное ко­ли­че­ство раз или не ис­поль­зо­вать со­всем. Сколь­ко раз­лич­ных кодов может со­ста­вить Борис?

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

Ре­ше­ние.

Найдём ко­ли­че­ство ше­сти­бук­вен­ных слов, в ко­то­рых есть ровно одна буква Б и ровно одна буква Р, тогда остаётся 4 по­зи­ции для раз­ме­ще­ния букв С, И, О.

1.  Если 4 по­зи­ции за­ни­ма­ют буквы О и И, при этом код не со­дер­жит буквы С, то по­лу­ча­ет­ся 2 · 2 · 2 · 2  =  16 ва­ри­ан­тов.

2.  Если 4 по­зи­ции за­ни­ма­ют буквы О, И и С, с учётом того, что буква С может ис­поль­зо­вать­ся толь­ко один раз, то по­лу­ча­ет­ся 4 · 8  =  32 ва­ри­ан­та.

При этом буква Б может сто­ять на любой из шести по­зи­ций, буква Р  — на любой из остав­ших­ся пяти по­зи­ций, всего 6 · 5  =  30  ва­ри­ан­тов.

Тогда ко­ли­че­ство раз­лич­ных кодов: 30 · (16 + 32)  =  1440.

 

Ответ: 1440.

 

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

import itertools

alphabet = "БОРИС"

ar = itertools.product(alphabet, repeat=6) #Раз­ме­ще­ние с по­вто­ре­ни­ем

arl = []

for i in ar:

arl.append(list(i))

count = 0

for e in arl:

if e.count("Б") == 1 and e.count("Р") == 1 and e.count("С") <= 1:

count += 1

print(count)

 

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

from itertools import *

cnt = 0

for per in product('БОРИС', repeat=6):

slovo = ''.join(per)

if slovo.count('Б') == 1 and slovo.count('Р') == 1 and slovo.count('С') <= 1:

cnt += 1

print(cnt)

 

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

begin

'Б, О, Р, И, С'.Remove(', ').Cartesian(6)

.where(s->(s.CountOf('Б')=1))

.where(s->(s.CountOf('Р')=1))

.where(s->(s.CountOf('С')<=1))

.Count.Print;

end.

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