ในปัญหานี้ เราได้รับตัวเลข งานของเราคือค้นหา XOR ของการนับ 0 และ 1 ในการแทนค่าเลขฐานสองของตัวเลข
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
n = 9
ผลลัพธ์
0
คำอธิบาย
binary = 1001 Count of 0s = 2 Count of 1s = 2 2 ^ 2 = 0
ในการแก้ปัญหานี้ ก่อนอื่นเราจะแปลงจำนวนเลขฐานสองที่เทียบเท่ากัน จากนั้นวนซ้ำในแต่ละบิตของตัวเลข นับ 0 และ 1 แล้วหา XOR ของการนับ 0 และนับ 1
โปรแกรมเพื่อแสดงวิธีแก้ปัญหาข้างต้น
ตัวอย่าง
#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 of count of 0s and 1s in binary of "<<n<<" is "<<countXOR10(n); return 0; }
ผลลัพธ์
XOR of count of 0s and 1s in binary of 21 is 1