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

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

1.  АААА

2.  АААП

3.  АААР

4.  АААС

5.  АААУ

6.  ААПА

...

 

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

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

Ре­ше­ние.

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

1.  0000

2.  0001

3.  0002

4.  0003

5.  0004

6.  0010

...

 

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

 

Ответ: 157.

 

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

a = {0: "А", 1: "П", 2: "Р", 3: "С", 4: "У"}

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 product

print(sorted([''.join(p) for p in product('ПАРУС', repeat=4)]).index('ПППП')+1)

 

 

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

begin

('ПАРУС'.Sorted.Cartesian(4)

.Select(s -> s.JoinToString)

.ToArray

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

end.

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