很优秀的拆分的题解

现在你拿到了一个数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;
}

就这么短,没问题

发布了110 篇原创文章 · 获赞 188 · 访问量 7134

猜你喜欢

转载自blog.csdn.net/qq_46230164/article/details/105460964