#include<iostream>
using namespace std;
int main()
{
int n, a, b, d, m;
do{
cin >> n;
} while (n <= 0);
a = n; b = 0;
while (a)
{
b += a & 1;
a >>= 1;
}
m = n;
do
{
d = 0; m++;
a = m;
while (a)
{
d += a & 1; a >>= 1;
}
} while (d != b);
cout << m << endl;
return 0;
}
给定一个大于0的整数n,把它转换为二进制,则其二进制数中至少有1位是“1”。编写一个程序,找出比给定的整数n大的最小整数m。要求m 和 n 两个整数转换成二进制数后,二进制数中包含的1的个数相同