很优秀的拆分的题解

现在你拿到了一个数n,要求你把n拆分为若干数的和,使得这几个数的和相加可以表示1~n的所有数,那么最少要拆几个数呢?

美妙的二进制的极致应用

例如:

1248163264128

互相加可以加出1~255之间所有的数

所以,代码也简单了

#include <bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
	int s=0;
	while(n!=0){
		n/=2;
		s++;
	}cout<<s;
	return 0;
}

就这么短,没问题

原文地址:https://www.cnblogs.com/zhaohaikun/p/12816955.html