ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่หาจำนวนที่มากที่สุดซึ่งน้อยกว่าที่กำหนด 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
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น