Лучшие помощники
- Megamozg 2205 б
- Matalya1 1800 б
- DevAdmin 1720 б
- arkasha_bortnikov 900 б
- Dwayne_Johnson 870 б
2 апреля 2023 00:09
1484
Даю 20баллов!!! Только на C++!!!!!Быстрое возведение в степень
Возводить в степень можно гораздо быстрее, чем за n умножений! Для этого нужно воспользоваться следующими рекуррентными соотношениями:
an=(a2)n/2 при чётном n,
an=a∗an−1 при нечётном n.
Реализуйте алгоритм быстрого возведения в степень. Если вы всё сделаете правильно, то количество умножений будет иметь порядок log2n.
Нельзя использовать встроенную операцию возведения в степень, в силу особенностей тестирующей системы избегайте слова pow в названии функции.
Входные данные
Вводится действительное число a и целое неотрицательное число n.
Выходные данные
Выведите ответ на задачу.
Примеры

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;
}
Объяснение:
#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 00:09
Остались вопросы?
Еще вопросы по категории Информатика
среди множеств книга, бензин, врач, молоко, строитель, учебник, жидкость, справочник, человек, найдите шесть пар, между которыми существует отношение...
какие виды поиска необходимо использовать при решении задачи: "Найдите все Указы президента, действующие по настоящий момент времени"...
Pygame.display.set.caption.-перевод...
Чем отличаются полное ветвление от неполного ?...
Паскаль, ошибка Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла Var a: array [1..5] of integer; begin begin a := random(50...