在C ++中将N以下的每个整数表示为总和所需的最小数字
问题陈述
我们有一个整数N。我们需要将N表示为K个整数的总和,这样,通过将这些整数中的一些或全部相加,我们可以得到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
热门推荐
10 朋友新年祝福语大全 简短
11 新年祝福语简短大方兔年
12 搬新家礼物祝福语简短
13 同学见面花束祝福语简短
14 五一假期祝福语幽默简短
15 离职欢送敬酒祝福语简短
16 对学弟的祝福语简短
17 考老师辞职祝福语简短
18 祝福语驱散霉运的话简短