
Все 6-буквенные слова, составленные из букв Б, К, Ф, записаны в алфавитном порядке и пронумерованы. Вот начало списка:
1. ББББББ
2. БББББК
3. БББББФ
4. ББББКБ
...
Запишите слово, которое стоит на 342-м месте от начала списка.
Решение. Заменим буквы Б, К, Ф на 0, 1, 2 (для них порядок очевиден — по возрастанию).
Выпишем начало списка, заменив буквы на цифры:
1. 000000
2. 000001
3. 000002
4. 000010
...
Полученная запись есть числа, записанные в троичной системе счисления в порядке возрастания. Тогда на
341 / 3 = 113 (2)
113/ 3 = 37 (2)
37 / 3 = 12 (1)
12 / 3 = 4 (0)
4 / 3 = 1 (1)
1 / 3 = 0 (1)
В троичной системе 341 запишется как 110122. Произведём обратную замену и получим ККБКФФ.
Ответ: ККБКФФ.
Приведём другое решение на языке Python.
a = {0: "Б", 1: "К", 2: "Ф"}
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)):
for l in range(0, len(a)):
k += 1
if k == 342:
print(a[i], a[j], a[g], a[m], a[n], a[l], end=" ")
Приведём решение Никиты Чуйкова на языке Python.
from itertools import *
c = 1
for i in product('БКФ', repeat=6):
a = ''.join(i)
if c == 342:
print(c, a)
break
c += 1
PDF-версии: