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