# Solving and testing fast exponentiation (part 92e3)

Разберём решение и сразу накроем его тестами — это хороший стиль работы с кодом.

## Задача

Вычислить `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).


## Проверка тестами

Хорошая привычка — проверять решение сразу на нескольких примерах, включая крайние случаи.

```python
assert is_valid(True) is not None  # базовая проверка вызова
assert is_valid(False) is not None  # и второй случай
```

Такой минимум уже защищает от случайной ошибки при правках кода.

Тесты вида assert удобны для учебных задач: они короткие, наглядные и не требуют фреймворков.

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

[ошибки](https://test.origlifeart.tw/%E5%8E%9F%E4%BD%8F%E6%B0%91%E8%88%9E?f=linkcentre) · [двоичное](https://ecency.com/@karelnovotn6538/kingtommyyyy-a63ae5) · [удобны](https://jaflysilve.freeflarum.com/d/2027-2027-ams-cherish-exclusive-art-modeling-studios-photo-set) · [Задача](https://sway.cloud.microsoft/pVVEYPzmEDqdCPJB) · [защищает](https://sexicelebs.su/cumidredra?f=linkcentre) · [падает](https://rentry.co/wfh344bg) · [второй](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/sakso-eken-t-rbanl-003875.pdf) · [основание](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [Быстрый](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [крайние](https://sway.cloud.microsoft/fdQjnYp8LOE4t1PK) · [быстрого](https://ecency.com/@adamsvoboda1644/post-b98434) · [Разберём](https://blogfreely.net/catherine-vasilyev70/angel-the-dreamgirl-multi-tasking-maid-femdom-pov-gallery) · [квадрат](https://paste2.org/7M2zdXLP) · [while](https://rentry.co/500-219404) · [хороший](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/beefarmr-53aab5.pdf) · [показатель](https://ecency.com/@filippospis5169/leah-ray-porn-7c62db) · [базовая](https://rimworld.gallery/m/random/t/16277) · [Пример](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/lepas-kaos-karena-cuaca-panas-823e3b.pdf) · [показателя](https://blogfreely.net/nathannazarov26/spichkax) · [сразу](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-c9d44c.pdf) · [простым](https://ecency.com/@vojtechurban2724/post-e026b3) · [включая](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-10658c.pdf) · [range(exp](https://kswbradio.com/wifeymadison?f=instapaper) · [работает](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/avop-060-8645ab.pdf) · [проверять](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [метод](https://www.imagefap.com/pictures/14229610/i-man-olgun-twitter-f-a-videolar-amat-ouml-r-t-uuml-rk-olgu) · [учебных](https://paste2.org/KbjGK0jZ)

