πDay 2. Implement Pow π§
The problem can be found at the following link: Problem Link
π‘ Problem Description:
You are given a floating point number b and an integer e, and your task is to calculate ( b^e ) (b raised to the power of e).
π Example Walkthrough:
Input:
b = 3.00000, e = 5
Output:
243.00000
Input:
b = 0.55000, e = 3
Output:
0.16638
Input:
b = -0.67000, e = -7
Output:
-16.49971
Constraints:
-100.0 < b < 100.0
-109 <= e <= $10^9$
Either b is not zero or e > 0.
-104 <= be <= $10^4$
π― My Approach:
Optimized Binary Exponentiation: The problem can be efficiently solved using the binary exponentiation approach (also known as exponentiation by squaring). This method reduces the number of multiplications required to compute ( b^e ) by breaking the problem down recursively.
Steps:
If
e == 0, return 1, as any number raised to the power of 0 is 1.If
eis negative, calculate the result using $( \frac{1}{b^e} )$.For positive
e, repeatedly divideeby 2, multiplyingbby itself for each halving ofe.The result is obtained by squaring the value of
bfor each step and multiplying it with the current result when necessary.
Optimization: Using a while loop or recursion, the approach reduces the time complexity from O(e) (in the naive approach) to O(log e) , which is significantly faster for large values of
e.
π Time and Auxiliary Space Complexity
Expected Time Complexity: $O(log |e|)$, where $(e)$ is the exponent. The exponent is reduced by half in each iteration.
Expected Auxiliary Space Complexity: $O(1)$, as we only use a constant amount of additional space.
π Solution Code
Code (C++)
class Solution {
public:
double power(double b, int e) {
if (e == 0) return 1.0;
double half = power(b, e / 2);
return e % 2 == 0 ? half * half : (e > 0 ? b * half * half : (1.0 / b) * half * half);
}
};Code (Java)
class Solution {
public double power(double b, int e) {
if (e == 0) return 1.0;
double half = power(b, e / 2);
return e % 2 == 0 ? half * half : (e > 0 ? b * half * half : (1.0 / b) * half * half);
}
}Code (Python)
class Solution:
def power(self, b: float, e: int) -> float:
result = 1.0
exp = abs(e)
while exp > 0:
if exp % 2 == 1:
result *= b
b *= b
exp //= 2
return result if e >= 0 else 1.0 / resultπ― Contribution and Support:
For discussions, questions, or doubts related to this solution, feel free to connect on LinkedIn: Any Questions. Letβs make this learning journey more collaborative!
β If you find this helpful, please give this repository a star! β
πVisitor Count
Last updated