#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的个数相同
本文介绍了一个程序设计问题:给定一个正整数n,找到最小的整数m,使得m>n且m和n的二进制表示中1的数量相等。通过C++代码实现并解析了这一算法。
563

被折叠的 条评论
为什么被折叠?



