#include <iostream>
#include <vector>
using namespace std;
// Function to count the number of set bits in an integer
int countSetBits(int n) {
int count = 0;
while (n) {
count += n & 1;
n >>= 1;
}
return count;
}
// Function to count even and odd set bits in an array
void countEvenOddSetBits(const vector<int>& arr, int& evenCount, int& oddCount) {
evenCount = oddCount = 0;
for (int num : arr) {
if (countSetBits(num) % 2 == 0) {
evenCount++;
} else {
oddCount++;
}
}
}
int main() {
vector<int> A = {1, 2, 3}; // Example input
vector<int> B = {4, 5, 6};
vector<int> C = {7, 8, 9};
int E1, O1, E2, O2, E3, O3;
countEvenOddSetBits(A, E1, O1);
countEvenOddSetBits(B, E2, O2);
countEvenOddSetBits(C, E3, O3);
long long result = (long long)E1 * E2 * E3 + (long long)E1 * O2 * O3 + (long long)O1 * E2 * O3 + (long long)O1 * O2 * E3;
cout << "The number of triplets with an even number of set bits in their XOR is: " << result << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRnVuY3Rpb24gdG8gY291bnQgdGhlIG51bWJlciBvZiBzZXQgYml0cyBpbiBhbiBpbnRlZ2VyCmludCBjb3VudFNldEJpdHMoaW50IG4pIHsKICAgIGludCBjb3VudCA9IDA7CiAgICB3aGlsZSAobikgewogICAgICAgIGNvdW50ICs9IG4gJiAxOwogICAgICAgIG4gPj49IDE7CiAgICB9CiAgICByZXR1cm4gY291bnQ7Cn0KCi8vIEZ1bmN0aW9uIHRvIGNvdW50IGV2ZW4gYW5kIG9kZCBzZXQgYml0cyBpbiBhbiBhcnJheQp2b2lkIGNvdW50RXZlbk9kZFNldEJpdHMoY29uc3QgdmVjdG9yPGludD4mIGFyciwgaW50JiBldmVuQ291bnQsIGludCYgb2RkQ291bnQpIHsKICAgIGV2ZW5Db3VudCA9IG9kZENvdW50ID0gMDsKICAgIGZvciAoaW50IG51bSA6IGFycikgewogICAgICAgIGlmIChjb3VudFNldEJpdHMobnVtKSAlIDIgPT0gMCkgewogICAgICAgICAgICBldmVuQ291bnQrKzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBvZGRDb3VudCsrOwogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICB2ZWN0b3I8aW50PiBBID0gezEsIDIsIDN9OyAgLy8gRXhhbXBsZSBpbnB1dAogICAgdmVjdG9yPGludD4gQiA9IHs0LCA1LCA2fTsKICAgIHZlY3RvcjxpbnQ+IEMgPSB7NywgOCwgOX07CgogICAgaW50IEUxLCBPMSwgRTIsIE8yLCBFMywgTzM7CgogICAgY291bnRFdmVuT2RkU2V0Qml0cyhBLCBFMSwgTzEpOwogICAgY291bnRFdmVuT2RkU2V0Qml0cyhCLCBFMiwgTzIpOwogICAgY291bnRFdmVuT2RkU2V0Qml0cyhDLCBFMywgTzMpOwoKICAgIGxvbmcgbG9uZyByZXN1bHQgPSAobG9uZyBsb25nKUUxICogRTIgKiBFMyArIChsb25nIGxvbmcpRTEgKiBPMiAqIE8zICsgKGxvbmcgbG9uZylPMSAqIEUyICogTzMgKyAobG9uZyBsb25nKU8xICogTzIgKiBFMzsKCiAgICBjb3V0IDw8ICJUaGUgbnVtYmVyIG9mIHRyaXBsZXRzIHdpdGggYW4gZXZlbiBudW1iZXIgb2Ygc2V0IGJpdHMgaW4gdGhlaXIgWE9SIGlzOiAiIDw8IHJlc3VsdCA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9Cg==