แนวคิด
สมมติว่ามีจำนวนเต็ม ให้ตรวจสอบว่าเป็นกำลังของ 4 หรือไม่
เช่น ถ้าอินพุตคือ 16 ผลลัพธ์คือ True
วิธีแก้:
- ถ้า num < 0: คืนค่า false
- ถ้า num & (num - 1) ไม่เป็นศูนย์: คืนค่า false
- ถ้า (num & 01010101010101010101010101010101) เป็นศูนย์: คืนค่า false
- คืนค่า true
ตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool isPowerOfFour(int num){
if (num < 0) return false;
if (num & (num - 1)) return false;
if (!(num & 0x55555555)) return false;
return true;
}
};
main() {
Solution ob;
cout << (ob.isPowerOfFour(64));
}
อินพุต
64
เอาต์พุต
1