用 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

更新於: 2019 年 12 月 23 日

168 次瀏覽

開啟您的 職業生涯

完成課程後獲得認證

開始
廣告
© . All rights reserved.