#pragma once

// Возведение в степень
namespace alg
{
  inline int pow(double a, int n)
  {
    double result = 1.0;
    bool is_negative = n < 0;

    if (is_negative) n *= -1;

    while (n > 0)
    {
      if (n & 1) result *= a;
      a *= a;
      n >>= 1;
    }

    return is_negative ? 1.0 / result : result;
  }
}

