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

จำนวนที่มากที่สุดที่น้อยกว่า X มี K set bits มากที่สุดใน C++


ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่หาจำนวนที่มากที่สุดซึ่งน้อยกว่าที่กำหนด x และควรมีเซ็ตบิตสูงสุด k

มาดูขั้นตอนการแก้ปัญหากัน

  • เริ่มต้นตัวเลข x และ k
  • หาเซตบิตในจำนวน x
  • เขียนลูปที่วนซ้ำ set bits count ของ x - k.
    • อัปเดตค่าของ x ด้วย x &(x - 1)
  • คืน x.

ตัวอย่าง

มาดูโค้ดกันเลย

#include <bits/stdc++.h>
using namespace std;
int largestNumberWithKBits(int x, int k) {
   int set_bit_count = __builtin_popcount(x);
   if (set_bit_count <= k) {
      return x;
   }
   int diff = set_bit_count - k;
   for (int i = 0; i < diff; i++) {
      x &= (x - 1);
   }
   return x;
}
int main() {
   int x = 65, k = 2;
   cout << largestNumberWithKBits(x, k) << endl;
   return 0;
}

ผลลัพธ์

หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

65

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น