【HNOI2006】【BZOJ1192】鬼谷子的钱袋(水题,位运算?)
problem
- 把一个数n进行拆分
- 拆分出来大于一的数两两不等,使得拆出来的数可以组成[1, n]间的所有数
- 求最少拆成多少个数。n <= 1000000000。
solution
统计二进制下有多少位就好啦。。。
codes
#include<iostream>
using namespace std;
int main(){
int n,ans=0; cin>>n;
while(n)n>>=1,ans++;
cout<<ans<<'\n';
return 0;
}