Все 5-буквенные слова, составленные из букв Л, Н, Р, Т, записаны в алфавитном порядке. Вот начало списка:
1. ЛЛЛЛЛ
2. ЛЛЛЛН
3. ЛЛЛЛР
4. ЛЛЛЛТ
5. ЛЛЛНЛ
Запишите слово, которое стоит на 150-м месте от начала списка.
Заменим буквы Л, Н, Р, Т на 0, 1, 2, 3 соответственно.
Выпишем начало списка, заменив буквы на цифры:
1. 00000
2. 00001
3. 00002
4. 00003
5. 00010
...
Полученная запись есть числа, записанные в четверичной системе счисления в порядке возрастания. Тогда на 150-м месте будет стоять
149 / 4 = 37 (1)
37 / 4 = 9 (1)
9 / 4 = 2 (1)
2 / 4 = 0 (2)
В четверичной системе 149 запишется как 2111. Поскольку слова 5-буквенные, добавим в начале числа незначащий нуль, получим 02111. Произведём обратную замену и получим ЛРННН.
Ответ: ЛРННН.
Приведём другое решение на языке 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 == 150:
print(a[i], a[j], a[g], a[m], a[n], end=" ")
Приведём решение Владимира Артамонова на языке Python.
from itertools import product
words = list(product('ЛНРТ', repeat=5))
print(*words[149])
Приведём решение Юрия Красильникова на языке Python.
from itertools import product
print([''.join(p) for p in product('ЛНРТ', repeat=5)][150-1])
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'Л, Н, Р, Т, '.Remove(', ')
.Sorted.Cartesian(5).Numerate
.Where(\(n,s)->n=150)
.First.Item2.Print;
end.

