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ặp có thể được tạo thành bằng cách sử dụng các giá trị mảng đã cho để phép toán XOR trên các cặp sẽ dẫn đến giá trị ODD.
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ó Odd XOR là - 6
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 một số 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ị lẻ.
-
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, hãy kiểm tra IF arr [i]% 2 ==FALSE, sau đó tăng số chẵn_XOR lên 1 ELSE tăng số lẻ_XOR ++;
-
Bây giờ, hãy đặt số lượng là lẻ_XOR * chẵn_XOR
-
Trả lại số lượng
-
In kết quả
Ví dụ
#include <iostream> using namespace std; //Count pairs with Odd XOR int Odd_XOR(int arr[], int size){ int count = 0; int odd_XOR = 0; int even_XOR = 0; for (int i = 0; i < size; i++){ if (arr[i] % 2 == 0){ even_XOR++; } else{ odd_XOR++; } } count = odd_XOR * even_XOR; return count; } int main(){ int arr[] = { 2, 6, 1, 4 }; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count of pairs with Odd XOR are: "<<Odd_XOR(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 Odd XOR are: 3