Джон составляет список всех возможных кодов, составленных из заглавных латинских букв. Сначала он выписывает в алфавитном порядке все коды, состоящие из одного символа (A, B, ..., Z), затем — тоже в алфавитном порядке — коды из двух символов (AA, AB, ..., AZ, BA, BB, ... ZZ), далее идут трёхсимвольные коды (AAA, AAB, ..., ZZZ) и так далее. Под каким номером окажется в этом списке код FEDABC?
Приведём решение на языке Python.
from itertools import product
count = 1
alf = sorted('QWERTYUIOPASDFGHJKLZXCVBNM')
for n in range(1,7):
for i in product(alf,repeat = n):
if "".join(i)=="FEDABC":
print(count)
break
count += 1
Ответ: 73644171.
Приведём другое решение на языке Python.
count = 0
# находим код крайнего элемента из пяти символов (ZZZZZ)
for x in range(1, 6):
count += 26 ** x
# делаем поправку на номер
count += 1
# переводим цепочку "FEDABC" в числовой код и прибавляем его к текущему значению
count += int("543012", 26)
print(count)
Приведём решение Бориса Савельева на языке Python.
from itertools import product
s = product('ABCDEFGHIJKLMNOPQRSTUVWXYZ',repeat = 6)
k = 26+26**2+26**3+26**4+26**5+1
for i in s:
p = ''.join(i)
if p == 'FEDABC':
print(k)
break
k += 1
Приведём решение Юрия Красильникова на языке Python.
m = 0
for c in 'FEDABC':
m = m*26 + ord(c) - ord('A')
print(sum(26**i for i in range(1,6)) + m+1)

