정수가 있다고 가정합니다. 4의 거듭제곱인지 아닌지 확인해야 합니다.
따라서 입력이 16과 같으면 출력이 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
num <0이면 -
-
거짓을 반환
-
-
num &(num - 1)이 0이 아닌 경우 -
-
거짓을 반환
-
-
(num &01010101010101010101010101010101)이 0이면 -
-
거짓을 반환
-
-
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