เราได้รับตัวเลขจำนวนเต็ม สมมติว่า x และภารกิจคือการนับจำนวนที่น้อยกว่า x ซึ่ง XOR กับ x จะส่งผลให้ค่ามากกว่าค่า XOR
ตารางความจริงสำหรับการดำเนินการ XOR แสดงไว้ด้านล่าง
A | B | A XOR B |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
ป้อนข้อมูล − int x =11
ผลผลิต − นับค่าที่น้อยกว่าที่ XOR มีค่า x มากกว่า x เท่ากับ − 4
คำอธิบาย −
เราได้ x เป็น 11 ซึ่งหมายความว่าเราต้องหา XOR ของ x ที่มีตัวเลขน้อยกว่า x ดังนั้นตัวเลขคือ 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 x =12
ผลผลิต − นับค่าที่น้อยกว่าที่ XOR มีค่า x มากกว่า x เท่ากับ − 11
คำอธิบาย −
เราได้ x เป็น 12 ซึ่งหมายความว่าเราต้องหา XOR ของ x ที่มีตัวเลขน้อยกว่า x ดังนั้นตัวเลขจึงเป็น 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 ( เท็จ)
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ป้อนองค์ประกอบจำนวนเต็มและเก็บไว้ในตัวแปรชื่อ x
-
ส่งค่า num ไปยังฟังก์ชันเพื่อดำเนินการต่อไป
-
สร้างการนับตัวแปรชั่วคราวเพื่อเก็บผลลัพธ์และตัวแปรชื่อ num แล้วตั้งค่าเป็น 1
-
เริ่มวนซ้ำ WHILE จนถึง x !=0
-
ภายในลูป ให้ตรวจสอบ IF x%2 ==0 แล้วตั้งค่าการนับเป็น count + num
-
ตั้งค่า num เป็น num * 2 และ x เป็น x / 2
-
คืนจำนวน
-
พิมพ์ผลลัพธ์
ตัวอย่าง
#include using namespace std; int XOR_smaller(int x){ int count = 0; int num = 1; while (x != 0){ if (x%2 == 0){ count = count + num; } num = num*2; x = x/2; } return count; } int main(){ int x = 20; cout<<"Count of smaller values whose XOR with x is greater than x are: "<<XOR_smaller(x); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count of smaller values whose XOR with x is greater than x are: 11