ВП
Вася Петин

Программисты на C/C++ есть вопрос Чем можно заменить функцию pow чтобы сложность алгоритма вместо W=(n^2)/2 стала W=n?

ВД
Виктория Дайнеко

Даже если мы организуем возведение в степень как тупое многократное умножение, мы получим O(n). Так что или ты что-то напутал, или дело там не в возведении в степень.

NP
Natali Petrenko

а откуда такая тупая реализация? ? ?

в стандартной библиотеке pow только плавающая, время вообще константное, как там реализовано - не знаю, наверное через логарифм и экспоненту.
pow(x, y) эквивалентно exp(y*ln(x))

если хотите сами сделать чисто целочисленный алгоритм - и тут можно неслабо соптимизировать, представив степень в двоичном виде и посчитав только нужные степени. Трудоемкость будет порядка логарифма от степени (номера старшего ненулевого бита)

типа так (только для положительных! ) :
unsigned ipow(unsigned a, unsigned b){
unsigned res = 1;
while(b){
if(b&1)
res *=a;
a *= a;
b = b >> 1;
}
return res;
}

Ленка
Ленка

Не совсем понятно, что Вам нужно.
Если нужно решить задачу возведения в степень без применения функции pow - используйте логарифмы: a^n = ln(n*exp(a)).

Или же создайте функцию, в которой организован цикл возведения в степень каким либо хитрым способом (из очень много) .

Пишите в комментариях конкретную задачу, я Вам ее реализую на С++ без использования pow.

Похожие вопросы
Вопрос программистам (C++)
Как записать уравнение в C#? 2n/(n+1)^2
c++ printf ("%d \ЕЕЕЕ", переменная) на что надо заменить ЕЕЕЕ, чтобы строка чистилась ( \n - перенос строки)??
Вопрос к программистам C++
Вопрос к программистам C#
Вопрос к C-программистам )
Вопрос легкий! Нужно составить алгоритм y=n!
Вопрос для программистов C++
Посчитать n от n! Т. е. Вводим 120, это факториал числа 5. Желательно c#, но достаточно будет объяснить алгоритм
(C#) Как создать массив - 2 столбика на n рядов (n - произвольное число) ?