package com.interview.number; /** * Date 03/13/2016 * @author Tushar Roy * * Find power of 2 numbers. * * Time complexity O(logn) * Space complexity O(1) * * https://leetcode.com/problems/powx-n/ * http://www.geeksforgeeks.org/write-a-c-program-to-calculate-powxn/ */ public class PowerFunction { public int power(int n, int m){ if(m == 0){ return 1; } int pow = power(n,m/2); if(m % 2 ==0){ return pow*pow; }else{ return n*pow*pow; } } public double powerUsingBit(double x, int n) { if (n == 0) { return 1; } long r = n; if (r < 0) { x = 1/x; r = -r; } double power = x; double result = x; double result1 = 1; while (r > 1) { result *= result; if ((r & 1) != 0) { result1 = result1 * power; } r = r >> 1; power = power * power; } return result * result1; } public static void main(String args[]){ PowerFunction pf = new PowerFunction(); long pow = pf.power(3, 5); System.out.print(pow); } }