# Step-by-step: fast exponentiation (part 7461)

Медленный разбор помогает понять код, а не просто скопировать его.

## Задача

Вычислить `base ** exp` двумя способами: простым умножением и алгоритмом быстрого возведения в степень.

## Решение

```python
def power(base: int, exp: int) -> int:
    result = 1
    for _ in range(exp):
        result *= base
    return result


def fast_power(base: int, exp: int) -> int:
    result = 1
    while exp > 0:
        if exp % 2 == 1:
            result *= base
        base *= base
        exp //= 2
    return result


print(power(2, 10), fast_power(2, 10))
```

## Как это работает

Быстрый метод использует двоичное представление показателя: показатель делится на два, а основание возводится в квадрат. Число умножений падает с `exp` до `log2(exp)`.

## Пример работы

```text
1024 1024
```

## Сложность

O(exp) против O(log exp).


## Разбор по шагам

1. **Шаг 1. Входные данные.** Проверяем, что приходит в функцию, и какие значения считаются корректными.
2. **Шаг 2. Основной цикл.** Именно здесь происходит вся работа; следим за изменениями переменных на каждой итерации.
3. **Шаг 3. Результат.** Убеждаемся, что возвращаемое значение соответствует условию задачи, включая крайние случаи.

Читая чужой код, повторите тот же мысленный разбор по шагам — это самый быстрый способ научиться.

**Читайте также:**

[O(log](https://paper.wf/ninasvoboda70log/carly-coplin) · [следим](https://articlescad.com/newly-married-couple-honeymoon-photos-indian-nude-girls-sudipa-386730.html) · [корректными](https://drop.xtrafrancyz.net/selif/3un6apx0gb.pdf) · [while](https://news-ctl-posts.hashnode.dev/a-step-by-step-look-at-palindrome-check-part-8f3a) · [быстрого](https://discuss.tchncs.de/post/65444457) · [result](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [повторите](https://kappa.lol/LMxvwy) · [основание](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/word-count-shagi-mvfj3g7s.md) · [способами](https://ldsvideostore.com/%C5%9Fi%C5%9Fme-bebek-realistik?f=instapaper) · [Именно](https://yakihonne.com/article/naddr1qvzqqqr4gupzqvnkqky244xngq5xushu9qzpqu5evxmfj92nyuqmssfscmgzrlmsqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknzvekv9jryenr95uxgd34956ryvee94snydf495ux2c3sxpjnjd3j8p3ky3qkskn) · [работает](https://yakihonne.com/article/naddr1qvzqqqr4gupzqrscw5h5w3x93ckgj8wff9h3s7n8z5w2396ynjf644ymysf4qdk9qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykngdek8ymnjc3495exzvfj956xgvn9943rxd35956nydtxxycrydfnx3nr2k2dqjp) · [значения](https://news-ctl-posts.hashnode.dev/understanding-binary-search-part-e535) · [возвращаемое](https://articlescad.com/nature-cute-wallpaper-387129.html) · [включая](https://news-ctl-posts.hashnode.dev/writing-tests-for-anagram-checking-part-2789) · [Сложность](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/mila-secret-stars-ec555d.pdf) · [Вычислить](https://2k.pics/%E8%92%82%E6%B3%95%E5%89%AA%E8%A1%A3?f=linkcentre) · [здесь](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [изменениями](https://drop.xtrafrancyz.net/selif/6ewr02i88w.pdf) · [понять](https://news-ctl-posts.hashnode.dev/solving-and-testing-the-euclidean-algorithm-for-gcd-part-8c89) · [умножений](https://drop.xtrafrancyz.net/selif/jp4k5ttnfh.pdf) · [просто](https://news-ctl-posts.hashnode.dev/understanding-the-fibonacci-sequence-part-a05c) · [Результат](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [print(power(2](https://articlescad.com/s-la-erta-nude-386604.html)

