在 C++ 中小於 X 的最大數字,且至多有 K 個設定位
在本教程中,我們將編寫一個程式來查詢小於給定 x 的最大數字,且至多有 k 個設定位。
我們來看看解決這個問題的步驟。
- 初始化數字 x 和 k。
- 找到數字 x 中的設定位。
- 編寫一個迴圈,迴圈設定位計數 x - k。
- 使用 x & (x - 1) 更新 x 的值。
- 返回 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
結論
如果您對本教程有任何疑問,請在評論部分提及。
廣告