Предмет: Информатика,
автор: 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", написано в условии
Похожие вопросы
Предмет: Английский язык,
автор: ulmeken2015
Предмет: Английский язык,
автор: danilkazakov21
Предмет: Русский язык,
автор: Аноним
Предмет: Українська мова,
автор: Vicabordun2004
Предмет: Литература,
автор: nekto66613p5y22n