【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;
}
posted @ 2018-05-28 13:26  gwj1139177410  阅读(96)  评论(0编辑  收藏  举报
选择