Trong bài toán này, chúng ta phải in tất cả các số từ 0 đến n là Bitwise AND của một nhị phân n.
Hãy lấy một ví dụ để hiểu rõ hơn về khái niệm này.
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
Để giải quyết vấn đề này, chúng ta cần sử dụng các toán tử bitwise. Sử dụng chúng, chúng tôi sẽ tìm thấy các tập hợp con được yêu cầu. Chúng tôi sẽ lặp lại từ n đến 1 bằng cách sử dụng một hàm cập nhật khác sẽ chỉ sử dụng những giá trị trả về là kết quả đầu ra và hoạt động của một số AND với n. Phép toán sẽ là i =(i-1) &N.
Dựa trên ý tưởng này, hãy tạo một thuật toán -
Thuật toán
Step 1 : Loop from n to 1 using decrement operator i = (i-1) & n Step 2 : PRINT i. Step 3 : EXIT.
Ví dụ
Chương trình thực hiện thuật toán trên -
#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; }
Đầu ra
11 10 9 8 3 2 1 0