Лучшие помощники
2 апреля 2023 21:09
590

Даю 20баллов!!! Только на C++!!!!!Быстрое возведение в степень

Возводить в степень можно гораздо быстрее, чем за n умножений! Для этого нужно воспользоваться следующими рекуррентными соотношениями:


an=(a2)n/2 при чётном n,


an=a∗an−1 при нечётном n.


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


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


Входные данные


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


Выходные данные


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


Примеры

image
1 ответ
Посмотреть ответы
Ответ:
#include <iostream>

double s(double a, int er)

{

if (er == 0)

{

return 1;

}

if (er % 2 == 0)

{

return s(a * a, er / 2);

}

return a * s(a, er - 1);

}

int main()

{

double a;

int n;

std::cin >> a >> n;

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

return 0;

}
Объяснение:

0
·
Хороший ответ
4 апреля 2023 21:09
Остались вопросы?
Найти нужный