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
結論
如果您在本教程中有任何疑問,請在評論區提出。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP