숫자 n이 있다고 가정합니다. 숫자가 처음과 마지막 위치에 2개의 설정 비트만 있는지 확인해야 합니다.
따라서 입력이 n =17과 같으면 n의 이진 표현이 10001이므로 출력은 True가 됩니다. 처음과 마지막 위치에 1이 두 개뿐입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- n이 1과 같으면
- 참 반환
- n - 1이 2의 거듭제곱이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시 코드
def is_pow_of_two(n):return (n &n-1) ==0def solve(n):n ==1인 경우:True return is_pow_of_two (n-1) n =17print(solve(n))사전>입력
17출력
사실