C++ 中具有相同設定位數的下一個較高數字
給定一個數字 n,我們必須找到一個比 n 大的數字,並且在二進位制表示中具有與 n 相同數量的設定位。
二進位制表示中的數字 1 稱為設定位。
讓我們看一個例子。
輸入
124
輸出
143
演算法
初始化數字 **n**。
編寫一個函式獲取設定位數的計數。
用 **n + 1** 初始化迭代變數。
編寫一個無限迴圈。
檢查等於 n 的設定位數的數字的設定位數。
找到時返回數字。
- 遞增數字。
實現
以下是上述演算法在 C++ 中的實現
#include <bits/stdc++.h> using namespace std; int getSetBitsCount(int n) { int count = 0; while (n) { if (n % 2 == 1) { count += 1; } n /= 2; } return count; } int getNextGreaterElementWithSameSetBits(int n) { int setBitsCount = getSetBitsCount(n); int i = n + 1; while (true) { if (setBitsCount == getSetBitsCount(i)) { return i; } i += 1; } } int main() { int n = 124; cout << getNextGreaterElementWithSameSetBits(n) << endl; return 0; }
輸出
如果執行上述程式碼,則將獲得以下結果。
143
廣告