이 문제에서는 0에서 n까지의 모든 숫자를 출력해야 합니다. 이 숫자는 n의 이진법에 대한 Bitwise AND입니다.
개념을 더 잘 이해할 수 있도록 예를 들어 보겠습니다.
Input : N = 4. Output : 0 4 Explanation : 0 & 4 = 0 1 & 4 = 0 2 & 4 = 0 3 & 4 = 0 4 & 4 = 4. Input : N = 6 Output : 0, 2, 4, 6
이 문제를 해결하려면 비트 연산자를 사용해야 합니다. 이를 사용하여 필요한 하위 집합을 찾습니다. 반환되는 값만 n의 출력과 일부 AND의 연산을 사용하는 다른 업데이트 함수를 사용하여 n에서 1까지 역방향으로 반복합니다. 연산은 i =(i-1) &N입니다.
이 아이디어를 기반으로 알고리즘을 만들 수 있습니다 -
알고리즘
Step 1 : Loop from n to 1 using decrement operator i = (i-1) & n Step 2 : PRINT i. Step 3 : EXIT.
예시
위 알고리즘의 프로그램 구현 -
#include <iostream> using namespace std; int main() { int n = 11; for (int i = n; i > 0; i = (i - 1) & n) cout << i << " "; cout << 0; return 0; }
출력
11 10 9 8 3 2 1 0