เราได้รับตัวเลขจำนวนเต็ม สมมติว่า 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