# Step-by-step: fast exponentiation

Пройдём задачу шаг за шагом — такой формат удобен для первого знакомства с алгоритмами.

## Задача

Вычислить `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. Результат.** Убеждаемся, что возвращаемое значение соответствует условию задачи, включая крайние случаи.

Когда каждый шаг понятен, доработка решения перестаёт быть лотереей.

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

[Пройдём](https://sway.cloud.microsoft/zqYYV6sBAcwHPncW) · [работа](https://dev.to/devnote2319/keeping-link-blocks-stable-across-platforms-ntgpa-1p8h) · [O(exp](https://pastelink.net/xw6jfc34) · [такой](https://dev.to/devnote2319/scheduling-retries-in-a-publishing-pipeline-uv670-4cbn) · [доработка](https://dev.to/devnote2319/idempotent-publishing-jobs-84uy2-3em1) · [решения](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/11/event-2cf98a.pdf) · [Число](https://statics.pancake.vn/web-media-264/b2/8d/eb/83/3c492c929e5ca24248fca0f60d258f6cec40771feba1571d1ffe289b.pdf) · [понятен](https://kappa.lol/AzkzBh) · [Когда](https://rimworld.gallery/m/random/t/16293) · [считаются](https://dev.to/devnote2319/account-pools-for-multi-platform-posting-168el-1d7i) · [возвращаемое](https://paper.wf/clarabecker72log/mafer-cam) · [основание](https://rimworld.gallery/m/random/t/16288) · [алгоритмами](https://dev.to/devnote2319/scheduling-retries-in-a-publishing-pipeline-c1e3p-1kdk) · [использует](https://dev.to/devnote2319/idempotent-publishing-jobs-id6wf-3l4b) · [делится](https://radicle.network/nodes/seed.pipapo.org/rad%3Az3raxtJZDGCqhmbEQt1TCYuY6GaiT/issues/78d664a05945c246f9dda588c569f267314d3383) · [power(base](https://workshophub-c2bae068.surge.sh/) · [O(log](https://discuss.tchncs.de/post/65439364) · [перестаёт](https://ecency.com/@jiribenes1878/punkninexxx-cb77c1) · [возводится](https://hey.xyz/posts/37rfaxwb23k3mq6mcnh) · [Разбор](https://milhench.com/wp-content/uploads/event-manager-uploads/event_banner/2026/11/anti-estrogen-ai-b89ac5.pdf) · [result](https://jaflysilve.freeflarum.com/d/21137-21137-maria-rudenok-nude-exclusive-leaked-photos-and-videos) · [Быстрый](https://ymcatexasyg.org/wp-content/uploads/event-manager-uploads/event_banner/2026/11/loredanag30-648fa5.pdf) · [Вычислить](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/11/elisaexhib-4979f7.pdf) · [return](https://kappa.lol/YN25B7) · [умножением](https://posts.workshop-hub.workers.dev/average-shagi)

