2의 거듭제곱 판별하기

2의 거듭제곱 판단하기 "어떤 자연수가 2의 거듭제곱임을 판별하라." 주어진 숫자가 263이하의 자연수라고 하면 당연히 2, 4, 8, 16, ... 순차적으로 확인해서 2의 거듭제곱인지 아닌지 판별하려고 할 것이다. (물론 unsigned long long type으로 말이다.) 쿼리가 m개라면 O(63m) 의 시간복잡도를 가질 것이다. 물론 이것만으로도 충분히 빠른 판단이라 생각되지만 특별한 방법을 찾게 되어서 블로그에 남기기로 하였다. 결론부터 말하면 어떤 자연수 n에 대해 (n & (n))== 이면 그 수는 2의 거듭제곱이다. 결론을 알았으니 맞는지 잠시 생각해보자. 1) 우리가 찾고자 하는 2의 거듭제곱 수 n의 비트표현을 살펴보면 한 자리만..

Algorithms/Mathematics 2018. 9. 20. 00:53
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함