정수가 있다고 가정합니다. 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