Chúng ta đượ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 sao cho phép toán AND trên các cặp sẽ cho kết quả là số chẵn số.
Bảng sự thật cho phép toán AND được đưa ra bên dưới
A | B | A ^ B |
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
Đầu vào - int arr [] ={2, 5, 1, 8, 9}
Đầu ra - Đếm số cặp có Bitwise VÀ như số EVEN là - 7
Giải thích -
a1 | a2 | a1 ^ a2 |
2 | 5 | 0 |
2 | 1 | 0 |
2 | 8 | 0 |
2 | 9 | 0 |
5 | 1 | 1 |
5 | 8 | 0 |
5 | 9 | 1 |
1 | 8 | 0 |
1 | 9 | 1 |
8 | 9 | 8 |
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 AND 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 số lượng là count * (count - 1) / 2
-
Tạo một biến tạm thời để lưu trữ tổng số cặp được tạo thành và đặt nó thành (size * (size - 1) / 2)
-
Lưu trữ số lẻ dưới dạng số trừ từ tổng số các cặp được tạo thành
-
Trả về giá trị lẻ
-
In kết quả.
Ví dụ
#include <iostream> using namespace std; //Count pairs with Bitwise AND as EVEN number int count_pair(int arr[], int size){ int count = 0; for (int i = 0; i < size; i++){ if (arr[i] % 2 != 0){ count++; } } count = count * (count - 1) / 2; int total_pair = (size * (size - 1) / 2); int odd = total_pair - count; return odd; } int main(){ int arr[] = {2, 5, 1, 8, 3 }; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count of pairs with Bitwise-AND as even number are: "<<count_pair(arr, size) << endl; 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-AND as even number are: 7