Задание 8. Информатика. ЕГЭ. Поляков-7870

Просмотры: 141
Изменено: 8 февраля 2025

Петя составляет список всех возможных кодов, составленных из заглавных латинских букв. Сначала он выписывает в алфавитном порядке все коды, состоящие из одного символа (A, B, …, Z), затем – тоже в алфавитном порядке – коды из двух символов (AA, AB, …, AZ, BA, BB, … ZZ), далее идут трёхсимвольные коды (AAA, AAB, …, ZZZ) и так далее. Под каким порядковым номером окажется в этом списке код DEFFED? Нумерация начинается с единицы.

Решение:

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) == 'DEFFED':
            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 'DEFFED':
    ans += d[c] * 26**p
    p += 1
print(ans)

Ответ: \(49920030\)