Предмет: Информатика, автор: Dre4nt

На С++ Быстрое возведение в степень
Возводить в степень можно гораздо быстрее, чем за n умножений! Для этого нужно воспользоваться следующими рекуррентными соотношениями:
an=(a2)n/2 при чётном n,
an=a∗an−1 при нечётном n.

Реализуйте алгоритм быстрого возведения в степень. Если вы всё сделаете правильно, то количество умножений будет иметь порядок log2n.
Нельзя использовать встроенную операцию возведения в степень, в силу особенностей тестирующей системы избегайте слова pow в названии функции.

Входные данные
Вводится действительное число a и целое неотрицательное число n.

Выходные данные
Выведите ответ на задачу.

Примеры
Ввод
2
7
Вывод
128

Ответы

Автор ответа: Аноним
2

Ответ:

#include <iostream>

double s_pow(double a, int power)

{

       if (power == 0)

       {

               return 1;

       }

       if (power % 2 == 0)

       {

               return s_pow(a * a, power / 2);

       }

       return a * s_pow(a, power - 1);

}

int main()

{

       double a;

       int n;

       std::cin >> a >> n;

       std::cout << s_pow(a, n);

       return 0;

}


Dre4nt: Нельзя использовать "pow", написано в условии
fkid2006: а нет без функции POW ???
ShadowAT: просто замени s_pow на s_pw. Это не функция pow а название функции s_pow, поэтому если нужно избегать слоав pow можно подставить pw
Похожие вопросы
Предмет: Английский язык, автор: danilkazakov21
Предмет: Русский язык, автор: Аноним