C++中二進位制表示中含m個1和m-1個0的最大數
在本教程中,我們將編寫一個程式,查詢具有m個1和m-1個0的最大數。
讓我們看看解決問題的步驟。
- 分別用2和1初始化兩個變數bits和result。
- 編寫一個從1迭代到n的迴圈。
- 使用pow(2, bits) - 1) * (pow(2, bits - 1)更新迭代變數的值。
- 如果迭代變數小於n,則使用i更新result。
- 遞增bits計數。
- 返回result。
示例
讓我們看看程式碼。
#include <bits/stdc++.h> using namespace std; long long getTheNumber(long long n) { long bits = 2; long long result = 1; long long i = 1; while (i < n) { i = (int)(pow(2, bits) - 1) * (pow(2, bits - 1)); if (i < n) { result = i; } bits++; } return result; } int main() { long long n = 654; cout << getTheNumber(n) << endl; return 0; }
輸出
如果執行上面的程式碼,則會得到以下結果。
496
結論
如果您在本教程中有任何疑問,請在評論區提出。
廣告