สมมติว่าเรามีจำนวนเต็ม ต้องเช็คก่อนว่าเป็นกำลัง 4 หรือเปล่า
ดังนั้นหากอินพุตเท่ากับ 16 เอาต์พุตจะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ถ้า num <0 แล้ว −
-
คืนค่าเท็จ
-
-
ถ้า num &(num - 1) ไม่ใช่ศูนย์ ดังนั้น −
-
คืนค่าเท็จ
-
-
ถ้า (num &01010101010101010101010101010101) เป็นศูนย์ −
-
คืนค่าเท็จ
-
-
คืนความจริง
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#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