题目链接
题目大意
找到一个比J大的最小整数M,满足J和M的二进制中1的个数相同
思路
思路一
emmm,直接一个一个慢慢找不就好啦ヾ(•ω•`)o
思路二
直接找出来,找规律:从右往左找到第一个组合为01,交换位置之后,把01这一组合之后所有的0放到1的前面
(代码就不写了,明明有更简单的=_=嘿嘿)
代码
int main()
{
int n;
while(cin >> n && n)
{
bitset<32> bn = n;
int sn = bn.count();
for(int m = n+1; ; ++m)
{
bitset<32> bm = m;
if(bm.count() == sn)
{
cout << m << "\n";
break;
}
}
}
}