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

Все четырёхбук­вен­ные слова, со­став­лен­ные из букв Р, Е, К, А, за­пи­са­ны в ал­фа­вит­ном по­ряд­ке и про­ну­ме­ро­ва­ны, на­чи­ная с 1. На­ча­ло спис­ка вы­гля­дит так:

1.  АААА

2.  АААЕ

3.  АААК

4.  АААР

5.  ААЕА

...

 

Под каким но­ме­ром в спис­ке идёт пер­вое слово, в ко­то­ром нет буквы А?

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

Ре­ше­ние.

За­ме­ним буквы на цифры сле­ду­ю­щим об­ра­зом: А  — 0, Е  — 1, К  — 2, Р  — 3. По­лу­ча­ем спи­сок:

1.  0000

2.  0001

3.  0002

4.  0003

5.  0010

...

 

Для на­хож­де­ния пер­во­го слова, в ко­то­ром нет буквы А, нужно найти номер ЕЕЕЕ, то есть 1111. Ис­поль­зу­ет­ся четырёхбук­вен­ный ал­фа­вит, зна­чит, нужно найти зна­че­ние числа 11114 в де­ся­тич­ном виде. Им яв­ля­ет­ся число 8510, но по­сколь­ку номер в спис­ке на еди­ни­цу боль­ше са­мо­го числа, то остаётся до­ба­вить к по­лу­чив­ше­му­ся числу еди­ни­цу. По­лу­ча­ем 86.

 

Ответ: 86.

 

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

a = {0: "А", 1: "Е", 2: "К", 3: "Р"}

k = 0

for i in range(0, len(a)):

for j in range(0, len(a)):

for g in range(0, len(a)):

for m in range(0, len(a)):

s = a[i] + a[j] + a[g] + a[m]

k += 1

if s.count('А') == 0:

print(k) # Возьмём пер­вое число, ко­то­рое вы­даст про­грам­ма

break

 

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

from itertools import *

R = []

for num, p in enumerate(product(sorted('РЕКА'), repeat=4), 1):

slovo = ''.join(p)

if 'А' not in slovo:

R.append(num)

print(min(R))

 

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

from itertools import product

a=sorted([''.join(p) for p in product('РЕКА', repeat=4)])

print(min([i+1 for i in range(len(a)) if 'А' not in a[i]]))

 

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

begin

('РЕКА'.Sorted.Cartesian(4)

.Select(s -> s.JoinToString)

.ToArray

.FindIndex(s -> 'А' not in s) + 1).Print;//86

end.

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