Тип 8 № 3233 

Перебор слов и системы счисления.Слова по порядку
i
Все 5-буквенные слова, составленные из букв А, К, Р, У, записаны в алфавитном порядке. Вот начало списка:
1. ААААА
2. ААААК
3. ААААР
4. ААААУ
5. АААКА
...
Запишите слово, которое стоит на 250-м месте от начала списка.
Решение. Заменим буквы А, К, Р, У на 0, 1, 2, 3 соответственно (для них порядок очевиден — по возрастанию).
Выпишем начало списка, заменив буквы на цифры:
1. 00000
2. 00001
3. 00002
4. 00003
5. 00010
...
Полученная запись есть числа, записанные в четверичной системе счисления в порядке возрастания. Тогда на 250-м месте будет стоять число 249 (так как первое число — 0). Переведём число 249 в четверичную систему (деля и снося остаток справа налево):
249 / 4 = 62 (1)
62 / 4 = 15 (2)
15 / 4 = 3 (3)
3 / 4 = 0 (3)
В четверичной системе 249 запишется как 3321, но в слове должно быть пять букв, поэтому добавим цифру ноль слева. Тогда, произведя обратную замену из 03321, получим АУУРК.
Ответ: АУУРК.
Приведём решение на языке 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)):
for n in range(0, len(a)):
k += 1
if k == 250:
print(a[i], a[j], a[g], a[m], a[n], end=" ")
Приведём решение Ильи Андрианова на языке Python.
s = sorted('АКРУ')
num = 0
for a in s:
for b in s:
for c in s:
for d in s:
for e in s:
slovo = a + b + c + d + e
num += 1
if num == 250:
print(slovo)
Приведём решение Ильи Андрианова на языке Python.
from itertools import *
num = 0
for per in product(sorted('АКРУ'), repeat=5):
slovo = ''.join(per)
num += 1
if num == 250:
print(slovo)
Приведём решение Ильи Андрианова на языке Python.
from itertools import *
for num, per in enumerate(product(sorted('АКРУ'), repeat=5), 1):
slovo = ''.join(per)
if num == 250:
print(slovo)
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'А, К, Р, У, '.Remove(', ')
.Sorted.Cartesian(5).Numerate
.Where(\(n,s)->n=250)
.First.Item2.Print;//АУУРК
end.
Ответ: АУУРК