用 C++ 表示 N 以下所有整數的和所需的最小數字
問題陳述
我們有一個整數 N。我們需要將 N 表示為 2 個整數的和,這些整數可以透過新增部分或全部整數來獲得 1 到 N 範圍內的所有數字。任務是找到 K 的最小值
範例
如果 N = 8,則最終答案即 K 為 3
如果我們取整數 1、2、3 和 4,則可以透過新增部分或全部這些組來得到 1 到 N 範圍內的所有數字
e.g. 1 = 1 2 = 2 3 = 3 4 = 4 5 = 1 + 5 6 = 4 + 2 7 = 4 + 3 8 = 1 + 3 + 4
演算法
Count number of bits from given integer
範例
#include <bits/stdc++.h>
using namespace std;
int getMinNumbers(int n) {
int cnt = 0;
while (n) {
++cnt;
n = n >> 1;
}
return cnt;
}
int main() {
int n = 8;
cout << "Minimum required numbers = " <<getMinNumbers(n) << endl;
return 0;
}當您編譯並執行上面的程式時。它將生成以下輸出
輸出
Minimum required numbers = 4
廣告
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP