Этот алгоритм только для степеней двойки.
Насколько я понял автора темы, ему нужен алгоритм для возведения произвольного числа в степень вида
![$(2^n-1)$ $(2^n-1)$](https://dxdy-03.korotkov.co.uk/f/6/c/4/6c47ecf541410bb771f58b5230c7162e82.png)
, а вовсе не для вычисления степеней двойки.
Polytech, а нельзя для вычисления
![$a^{2n-1}$ $a^{2n-1}$](https://dxdy-04.korotkov.co.uk/f/3/9/8/3989244019f59496dcb90cf80a15682f82.png)
просто
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
раз возвести в квадрат, а потом результат поделить на
![$a$ $a$](https://dxdy-01.korotkov.co.uk/f/4/4/b/44bc9d542a92714cac84e01cbbb7fd6182.png)
? Или деление -- это слишком долго?
И что такое "бинарка"?
А я тогда не понял.
Бинарка - это видимо алгоритм быстрого возведения в степень, путем разбиения степени по битам и т.о. оптимизации вычислений (если уже вычислено число a^2, то a^4 получается (a^2)^2 а a^3=(a^2)*a) - количество операций (умножений) равно двоичному логарифму от степени, т.е. N.
Короче алгоритма не существует.
Ну разве что можно разлагать степень не в двоичный код, а в любой другой, например троичный и использовать тот же самый бинарный принцип - но ведь это по сути будет тот же самый алгоритм.
Т.е. других алгоритмов не существует.