寫在前面
題目詳情
給定一個整數 (32 位有符號整數),請編寫一個函數來判斷它是否是 4 的冪次方。
示例 1:
輸入: 16
輸出: true
示例 2:
輸入: 5
輸出: false
進階:
你能不使用循環或者遞歸來完成本題嗎?
ac代碼
class Solution {
public:
bool isPowerOfFour(int num) {
return (num>0) && ((num & (num-1)) == 0) && (num%3 == 1);
}
};
F2:移位
- 1.4的冪的二進制位1都在奇數位上。
- 2.判斷是否num大於0,再判斷是否是2的冪,因爲是4的冪就一定是2的冪,在與0xAAAAAAAA想與,其二進制上所有偶數位均爲1。
- 3.以上條件均成立表示該數是4的冪。
class Solution {
public:
bool isPowerOfFour(int num) {
return (num > 0) && ((num & (num - 1)) == 0) && ((num & 0xAAAAAAAA) == 0);
}
};
class Solution {
public:
bool isPowerOfFour(int n)
{
for(long res=1; res<=n; res*=4)
{
if(res==n)
return true;
}
return false;
}
};