Chúng tôi được cung cấp một số nguyên, giả sử là x và nhiệm vụ là đếm các số nhỏ hơn x mà XOR với x sẽ dẫn đến giá trị lớn hơn giá trị XOR.
Bảng sự thật cho hoạt động XOR được đưa ra bên dưới
A | B | A XOR B |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
Đầu vào - int x =11
Đầu ra - Đếm các giá trị nhỏ hơn có XOR với x lớn hơn x là - 4
Giải thích -
Chúng ta được cho với x là 11, nghĩa là chúng ta cần tìm XOR của x với các số nhỏ hơn x. Vì vậy, các số là 1 XOR 11 <11 (FALSE), 2 XOR 11 <11 (FALSE), 3 XOR 11 <11 (FALSE), 4 XOR 11> 11 (TRUE), 5 XOR 11> 11 (TRUE), 6 XOR 11> 11 (TRUE), 7 XOR 11> 11 (TRUE), 8 XOR 11 <11 (FALSE), 9 XOR 11 <11 (FALSE), 10 XOR 11 <11 (FALSE).
Đầu vào -:int x =12
Đầu ra - Đếm các giá trị nhỏ hơn có XOR với x lớn hơn x là - 11
Giải thích -
Chúng ta được cho với x là 12 có nghĩa là chúng ta cần tìm XOR của x với các số nhỏ hơn x. Vì vậy, các số là 1 XOR 12> 12 (TRUE), 2 XOR 12> 12 (TRUE), 3 XOR 12> 12 (TRUE), 4 XOR 12 <12 (FALSE), 5 XOR 12 <12 (FALSE), 6 XOR 12 <12 (FALSE), 7 XOR 12 <12 (FALSE), 8 XOR 12 <12 (FALSE), 9 XOR 12 <12 (FALSE), 10 XOR 12 <12 (FALSE), 11 XOR 12 <12 ( SAI).
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Nhập một phần tử số nguyên và lưu trữ nó trong một biến có tên x.
-
Chuyển giá trị của num cho hàm để xử lý thêm
-
Tạo một số đếm biến tạm thời để lưu trữ kết quả và một biến có tên là num và đặt nó thành 1.
-
Bắt đầu vòng lặp WHILE cho đến x! =0
-
Bên trong vòng lặp, hãy kiểm tra IF x% 2 ==0, sau đó đặt số lượng là count + num
-
Đặt num là num * 2 và x là x / 2
-
Trả lại số lượng
-
In kết quả
Ví dụ
#include using namespace std; int XOR_smaller(int x){ int count = 0; int num = 1; while (x != 0){ if (x%2 == 0){ count = count + num; } num = num*2; x = x/2; } return count; } int main(){ int x = 20; cout<<"Count of smaller values whose XOR with x is greater than x are: "<<XOR_smaller(x); return 0; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
Count of smaller values whose XOR with x is greater than x are: 11