เราได้รับตัวเลขจำนวนเต็ม สมมติว่า num และภารกิจคือการนับจำนวนที่น้อยกว่า num ซึ่ง XOR กับ num จะส่งผลให้ค่าที่มากกว่าค่า XOR..
ตารางความจริงสำหรับการดำเนินการ XOR แสดงไว้ด้านล่าง
A | B | A XOR B |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
ป้อนข้อมูล − int num =11
ผลผลิต − การนับจำนวนที่น้อยกว่าที่ XOR มีค่า n ให้มากกว่าคือ − 4
คำอธิบาย −
เราได้ตัวเลขเป็น 11 ซึ่งหมายความว่าเราต้องหา XOR ของ num ที่มีตัวเลขน้อยกว่า num ดังนั้นตัวเลขคือ 1 XOR 11 <11 (FALSE), 2 XOR 11 <11 (FALSE), 3 XOR 11 <11 (FALSE), 4 XOR 11> 11 (TRUE), 5 XOR 11> 11 (TRUE), 6 XOR 11> 11(TRUE), 7 XOR 11> 11(TRUE), 8 XOR 11<11(FALSE), 9 XOR 11 <11(FALSE), 10 XOR 11 <11(FALSE)
ป้อนข้อมูล − int num =12
ผลผลิต − การนับจำนวนที่น้อยกว่าซึ่ง XOR ที่มีค่า n ให้ค่ามากกว่าคือ − 3
คำอธิบาย −
เราได้ตัวเลขเป็น 12 ซึ่งหมายความว่าเราต้องหา XOR ของ num ที่มีตัวเลขน้อยกว่า num ดังนั้นตัวเลขจึงเป็น 1 XOR 12> 12(TRUE), 2 XOR 12> 12(TRUE), 3 XOR 12> 12(TRUE), 4 XOR 12 <12(FALSE), 5 XOR 12 <12(FALSE), 6 XOR 12 <12 (เท็จ) 7 XOR 12 <12 (เท็จ) 8 XOR 12 <12 (เท็จ) 9 XOR 12 <12 (เท็จ) 10 XOR 12 <12 (เท็จ) 11 XOR 12 <12 ( เท็จ)
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ป้อนองค์ประกอบจำนวนเต็มและเก็บไว้ในตัวแปรชื่อ num
-
ส่งค่า num ไปยังฟังก์ชันเพื่อดำเนินการต่อไป
-
สร้างการนับตัวแปรชั่วคราวเพื่อเก็บผลลัพธ์
-
เริ่มวนซ้ำ WHILE จนถึง num> 0
-
ภายในลูป ให้ตรวจสอบ IF num &1 ==TRUE จากนั้นตั้งค่า count เป็น count + pow(2, temp)
-
เพิ่มค่าอุณหภูมิ 1
-
และตั้งค่า num เป็น num>> =1
-
คืนจำนวน
-
พิมพ์ผลลัพธ์
ตัวอย่าง
#include using namespace std; //Count smaller numbers whose XOR with n produces greater value int XOR_greater(int n){ int temp = 0; int count = 0; while (n > 0){ if ((n&1) == 0){ count += pow(2, temp); } temp++; n >>= 1; } return count; } int main(){ int n = 20; cout<<"Count of smaller numbers whose XOR with n produces greater value are: "<<XOR_greater(n) << endl; return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count of smaller numbers whose XOR with n produces greater value are: 11