Trong bài toán này, cho một số. Nhiệm vụ tìm XOR của số lượng bit 0 và bit 1 trong biểu diễn nhị phân của số đó.
Ví dụ:
Input
n = 9
Output
0
Giải thích
nhị phân = 1001
Số bit 0 = 2
Số bit 1 = 2
2 ^ 2 = 0
Cách giải: chuyển số sang nhị phân, duyệt từng bit đếm 0 và 1, sau đó XOR hai số đếm.
Ví dụ minh họa
#include <iostream>
using namespace std;
int countXOR10(int n) {
int count0s = 0, count1s = 0;
while (n) {
(n % 2 == 0) ? count0s++ : count1s++;
n /= 2;
}
return (count0s ^ count1s);
}
int main() {
int n = 21;
cout << "XOR số bit 0 và 1 trong nhị phân của " << n << " là " << countXOR10(n);
return 0;
}
Kết quả
XOR số bit 0 và 1 trong nhị phân của 21 là 1