Задание 8. Информатика. ЕГЭ. Поляков-7869
- Просмотры: 148
- Изменено: 8 февраля 2025
Петя составляет список всех возможных кодов, составленных из заглавных латинских букв. Сначала он выписывает в алфавитном порядке все коды, состоящие из одного символа (A, B, …, Z), затем – тоже в алфавитном порядке – коды из двух символов (AA, AB, …, AZ, BA, BB, … ZZ), далее идут трёхсимвольные коды (AAA, AAB, …, ZZZ) и так далее. Под каким порядковым номером окажется в этом списке код FEDBED? Нумерация начинается с единицы.
Решение:
Python
Грубый перебор (медленная версия)
from itertools import product
k = 1
n = 1
t = 1
f = False
while True:
if f: break
for i, p in enumerate(product('ABCDEFGHIJKLMNOPQRSTUVWXYZ', repeat=k), n):
t = i
if ''.join(p) == 'FEDBED':
print(i)
f = True
break
k += 1
n = t + 1
Оптимизированный код
alph = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
d = {c: i for i, c in enumerate(alph, 1)}
ans = 0
p = 0
for c in 'FEDBED'[::-1]:
ans += d[c] * 26**p
p += 1
print(ans)
Ответ: \(73644926\)