動機

Bit Manipulation,怕

Problem

Given an integer n, return true if it is a power of four. Otherwise, return false.

An integer n is a power of four, if there exists an integer x such that n == 4x.

 

Example 1:

Input: n = 16Output: true

Example 2:

Input: n = 5Output: false

Example 3:

Input: n = 1Output: true

 

Constraints:

    t
  • -231 <= n <= 231 - 1

 

Follow up: Could you solve it without loops/recursion?

Sol

4的次方數扣1,必定被三整除(用binary格式去看就會看到偶數個1,所以一定會被3整除)

接著要確認只有一個bit,像10扣1能被3整除,但10不是4的次方數

class Solution:
    def isPowerOfFour(self, n: int) -> bool:
        return n > 0 and (n-1) % 3 == 0 and (n&(n-1)) == 0