现在你拿到了一个数n,要求你把n拆分为若干数的和,使得这几个数的和相加可以表示1~n的所有数,那么最少要拆几个数呢?
美妙的二进制的极致应用
例如:
1
、2
、4
、8
、16
、32
、64
、128
互相加可以加出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;
}
就这么短,没问题