TheAlgorithms-C-Plus-Plus/math/binary_exponent.cpp
2020-04-02 04:31:44 +05:30

27 lines
766 B
C++

/// C++ Program to find Binary Exponent recursively.
#include<iostream>
/*
* Calculating a^b in O(log(b)) by converting b in binary no.
* Binary exponentiation (also known as exponentiation by squaring)
* is a trick which allows to calculate an using only O(logn) multiplications
* (instead of O(n) multiplications required by the naive approach).
*/
/// Function to calculate exponent in O(log(n)) using binary exponent.
int binExpo(int a, int b) {
if (b == 0) return 1;
int res = binExpo(a, b/2);
if (b%2) return res*res*a;
else return res*res;
}
int main() {
int a, b;
/// Give two nos as a^b (where '^' denotes power exponent operation)
std::cin >> a >> b;
/// Result of a^b
std::cout << binExpo(a, b) << std::endl;
}