Ещё пример задания:
Р-03. Все 4-буквенные слова, составленные из букв К, Л, Р, Т, записаны в алфавитном порядке и пронумерованы. Вот начало списка:
1. КККК
2. КККЛ
3. КККР
4. КККТ
……
Запишите слово, которое стоит на 67-м месте от начала списка.
Решение:
самый простой вариант решения этой задачи – использование систем счисления; действительно, здесь расстановка слов в алфавитном порядке равносильна расстановке по возрастанию чисел, записанных в четверичной системе счисления (основание системы счисления равно количеству используемых букв)
выполним замену К0, Л1, Р2, Т3; поскольку нумерация слов начинается с единицы, а первое число КККК0000 равно 0, под номером 67 будет стоять число 66, которое нужно перевести в четверичную систему: 66 = 10024
Выполнив обратную замену (цифр на буквы), получаем слово ЛККР.
Ответ: ЛККР.
Решение (с помощью программы, А.И. Козлов):
программа на языке Python, реализующая метод М. Густокашина:
ss = ['К', 'Л', 'Р', 'Т'] # буквы К, Л, Р, Т в алфавитном порядке
s = '' # строка для формирования ответа
x = 66 # числовой код слова: 67-1 = 66
while x: # перевод в четверичную систему счисления
s = ss[(x%4)] + s # с одновременной перекодировкой
x //= 4
print(s)
Ответ: ЛККР.
Решение (с помощью программы, А.Н. Носкин):
на компьютерном ЕГЭ можно использовать программу (язык Python):
a = ["К", "Л", "Р", "Т"] # буквы К, Л, Р, Т записаны в алфавитном
# порядке
s = "" # строка для формирования ответа
x = 66 # числовой код слова: 67-1 = 66
while x 0: # перевод в 4-ю систему счисления
s += str(x%4)
x //= 4
s = s[::-1] # реверс строки ответа
for x in s: # формирование СЛОВА
i = int(x)
print( a[i], end="" )
Ответ: ЛККР.
Решение (с помощью программы, С.С. Поляков):
программа на языке Python использует модуль itertools:
from itertools import product
print(*list(product('КЛРТ',repeat=4))[67-1])
Ответ: ЛККР.
Решение (с помощью программы, Б.С. Михлин):
можно использовать «метод грубой силы» – перебор всех вариантов:
n=0
s='клрт'
for a in s:
for b in s:
for c in s:
for d in s:
n+=1
if n==67:
print(a+b+c+d)
exit() # выход из Python
другой вариант (с «флажком» для входа из вложенного цикла) :
n=0
s='клрт'
fl=False # флажок сброшен
for a in s:
if fl: break
for b in s:
if fl: break
for c in s:
if fl: break
for d in s:
n+=1
if n==67:
print(a+b+c+d)
fl=True # флажок установлен для выхода
break
Ответ: ЛККР.