Power of three
Write a function isPowerOfThree(n) that returns true if n is a power of 3 and false if it is not.
- Powers of 3 are
1, 3, 9, 27, 81, ....1counts: it is 3 to the power 0. nis an integer from-2000000000to2000000000.0and negative numbers are not powers of 3.6and45divide by 3 with no remainder, but they are not powers of 3.
Then write a second function isPowerOf(n, base): the same check for any base. The parameter base is an integer, 2 or more. isPowerOf(16, 2) is true because 16 = 2 * 2 * 2 * 2. The same rules apply: 1 counts for every base, 0 and negative numbers never count. isPowerOfThree can just call isPowerOf(n, 3).
Both functions must be fast: big numbers are tested too, and a loop that repeats up to n times can be too slow.
In the real interview these rules were not in the task. The candidate had to ask about 1, 0 and negative numbers before coding, did not ask, and thinks this is why the interview failed.
Examples
isPowerOfThree(27)Returns true
isPowerOfThree(45)Returns false
isPowerOf(16, 2)Returns true
Asked at Hulu · Source
- Input
isPowerOfThree(27)Expectedtrue - Input
isPowerOfThree(45)Expectedfalse - Input
isPowerOfThree(1)Expectedtrue - isPowerOf(16, 2) is true, isPowerOf(12, 2) is false
- Input
isPowerOfThree(0)Expectedfalse
Hidden tests run on Submit