Chúng tôi được cung cấp một mảng số nguyên và nhiệm vụ là đếm tổng số các cặp có thể được tạo thành bằng cách sử dụng các giá trị mảng đã cho sao cho phép toán XOR trên các cặp sẽ dẫn đến NGAY LẬP TỨC giá trị.
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 arr [] ={2, 8, 1, 5, 11}
Đầu ra - Số lượng các cặp có Bitwise XOR như số EVEN là - 4
Giải thích -
a1 | a2 | a1 XOR a2 |
2 | 8 | 10 |
2 | 1 | 3 |
2 | 5 | 7 |
2 | 11 | 9 |
8 | 1 | 9 |
8 | 5 | 13 |
8 | 11 | 3 |
1 | 5 | 4 |
1 | 11 | 10 |
5 | 11 | 14 |
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 mảng các phần tử số nguyên để tạo thành một cặp
-
Tính toán kích thước của một mảng, truyền dữ liệu vào hàm để xử lý thêm
-
Tạo số lượng biến tạm thời để lưu trữ các cặp được tạo bằng phép toán XOR dưới dạng giá trị chẵn.
-
Bắt đầu vòng lặp FOR từ i đến 0 cho đến hết kích thước của một mảng
-
Bên trong vòng lặp, kiểm tra IF arr [i]% 2 ==FALSE, sau đó tăng số lượng lên 1
-
Đặt nhiệt độ là size * (size - 1)
-
Đặt một biến tạm thời khác làm cặp =temp / 2
-
Bây giờ, hãy tính các cặp giá trị lẻ trong một mảng dưới dạng số đếm * (kích thước - số lượng)
-
Bây giờ hãy tính các cặp chẵn dưới dạng tổng số các cặp - các cặp lẻ
-
Trả lại chẵn
-
In kết quả.
Ví dụ
#include <iostream> using namespace std; //Count pairs with Bitwise XOR as EVEN number int XOR_Even(int arr[], int size){ int count = 0; for (int i = 0; i < size; i++){ if (arr[i] % 2 != 0){ count++; } } int temp = size * (size-1); int Pairs = temp / 2; int odd = count * (size - count); int even = Pairs - odd; return even; } int main(){ int arr[] = { 2, 6, 1, 8}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count of pairs with Bitwise XOR as EVEN number are: "<<XOR_Even(arr, size); 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 pairs with Bitwise XOR as EVEN number are: 3