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

Ми­ха­ил со­став­ля­ет 5-⁠бук­вен­ные коды. В кодах раз­ре­ша­ет­ся ис­поль­зо­вать толь­ко буквы А, Б, В, Г, Д, при этом код не может на­чи­нать­ся с глас­ной и не может со­дер­жать двух оди­на­ко­вых букв под­ряд. Сколь­ко раз­лич­ных кодов может со­ста­вить Ми­ха­ил?

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

Ре­ше­ние.

На пер­вое место слова можно по­ста­вить любую из 5 букв, кроме А. На каж­дое сле­ду­ю­щее место можно по­ста­вить любую из 5 букв, кроме той, ко­то­рая стоит на преды­ду­щем месте. Зна­чит, всего Ми­ха­ил может со­ста­вить 4 · 4 · 4 · 4 · 4  =  1024 кода.

 

Ответ: 1024.

 

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

import itertools

alphabet = "АБВГД"

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

arl = []

for i in ar:

arl.append(list(i))

count = 0

for e in arl:

flag = True

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

if e[0] == 'А' or e[i] == e[i + 1]:

flag = False

if flag == True: count += 1

print(count)

 

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

k=['А','Б','В','Г','Д']

n = 0

for a in k:

for b in k:

for c in k:

for d in k:

for e in k:

s = a + b + c + d + e

if (s[0] != k[0]) and not('АА' in s) and not('ББ' in s) and not('ВВ' in s) and not('ГГ' in s) and not('ДД' in s):

n += 1

print (n)

 

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

count = 0

for a in 'бвгд':

for b in 'абвгд':

for c in 'абвгд':

for d in 'абвгд':

for e in 'абвгд':

if a != b and b != c and c != d and d != e:

count += 1

print(count)

 

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

from itertools import product

print(len([p for p in product('АБВГД',repeat = 5) if p[0] != 'А' and all(p[i] != p[i+1] for i in range(4))]))

 

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

from itertools import *

cnt = 0

for s in product('АБВГД', repeat=5):

slovo = ''.join(s)

if slovo[0] not in 'А':

if all(p not in slovo for p in 'АА ББ ВВ ГГ ДД'.split()):

cnt += 1

print(cnt)

 

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

begin

'А, Б, В, Г, Д'.Remove(', ').Cartesian(5)

.Count(s->(s[1]<>'А')and(s[1]<>s[2])and(s[2]<>s[3])and(s[3]<>s[4])and(s[4]<>s[5]))

.Print;

end.


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

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