Problem
Given two positive integers x and y, implement x y without using multiplication or division operator
Sample Input
x = 2 y = 4
Sample Output
16
Explanation
24 = 16
Approach
We will use a nested loop to solve this problem. This method is very simple and obvious if you know the concept of exponentiation, as shown below. To calculate 24, use the below steps:
1) 2 times add 2, we get 4. (2^2)
2) 2 times add 4, we get 8. (2^3)
3) 2 times add 8, we get 16 (2^4), which is our answer.
Complexity Analysis
The time complexity is O( x y ), and the space complexity is O(1)
C++ Programming
#include <bits/stdc++.h>
using namespace std;
// find exponent
int solve(int x, int y)
{
if (y == 0)
return 1;
int ans = x;
int temp = x;
int i, j;
for(i = 1; i < y; i++)
{
for(j = 1; j < x; j++)
{
ans += temp;
}
temp = ans;
}
return ans;
}
int main()
{
cout << solve(2, 4);
return 0;
}
Output
16
Java Programming
import java.io.*;
// implement power function
class Main {
static int solve(int x, int y)
{
if (y == 0)
return 1;
int ans = x;
int temp = x;
int i, j;
for (i = 1; i < y; i++) {
for (j = 1; j < x; j++) {
ans += temp;
}
temp = ans;
}
return ans;
}
public static void main(String[] args)
{
System.out.println(solve(2, 4));
}
}
Output
16
Python Programming
# implement power function
def solve(x,y):
if(y==0):
return 1
ans=x
temp=x
for i in range(1,y):
for j in range (1,x):
ans+=temp
temp=ans
return ans
print(solve(2,4))
Output
16
People are also reading:
- Find and remove loops in a Linked List?
- Find minimum jumps required to reach the destination
- Fibonacci Series
- Circular Doubly Linked List
- Breadth First Search- Graph: DSA
- Depth First Search(DFS)- DSA
- Bottom View of a Binary Tree
- Maximum size square sub-matrices with all 1’s
- Modular Exponentiation in Logarithmic Time
- Nth root of M