Как уменьшить объём используемой памяти в проге?

Есть вот такой код:

a = int(input())
spis = [1]
while len(spis) < a:
    b = a - len(spis)
    prom = spis[:b]
    for i in prom:
        spis.append(i*2)
        if len(spis) >= a:
            break
    prom = []
print(max(spis[:a]))

Он ищет максимальное число в списке длиной a, но не проходит тесты по объёму памяти, как уменьшить объём используемой памяти?


Ответы (2 шт):

Автор решения: Эникейщик

При этом алгоритме список можно даже не формировать, а максимум не искать. Его можно вычислить: он равен 2**int(math.log2(a)).

→ Ссылка
Автор решения: Danis

эту задачу можно решить так:

print(2**(len(bin(a))-3))
→ Ссылка