Cho mảng số nguyên. Đếm cặp (i,j) (i < j) sao cho arr[i] & arr[j] là số chẵn.
Nhận xét: AND chẵn khi ít nhất một trong hai là chẵn. Dễ đếm ngược: AND lẻ khi cả hai đều lẻ. Cặp chẵn = Tổng cặp - Cặp lẻ.
Ví dụ: {2,5,1,8,3} → 7.
Ví dụ
#include <iostream>
using namespace std;
int count_pair(int arr[], int size) {
int odd = 0;
for (int i = 0; i < size; i++)
if (arr[i] % 2 != 0) odd++;
int total = size * (size - 1) / 2;
int odd_pairs = odd * (odd - 1) / 2;
return total - odd_pairs;
}
int main() {
int arr[] = {2,5,1,8,3};
int size = sizeof(arr) / sizeof(arr[0]);
cout << "Count: " << count_pair(arr, size);
return 0;
}
Đầu ra
Count of pairs with Bitwise-AND as even number are: 7