Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับจำนวนที่น้อยกว่าซึ่ง XOR กับ n ให้ค่ามากกว่าใน C++


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