#include <iostream>
using namespace std;
string int2binary(int a)
{
string res = "";
int t;
while(a > 0)
{
t = a % 2;
a >>= 1;
if(t == 1)
res = "1" + res;
else
res = "0" + res;
}
return res;
}
int count2(int a)
{
int cont = 0;
while(a)
{
a = a &(a - 1);
cont++;
}
return cont;
}
int count1(string s)
{
int n = 0;
for(int i = 0; i < s.size(); ++i)
{
if(s[i] == '1')
++n;
}
return n;
}
int maxmin(int a, int n)
{
while(a++)
{
if(count1(int2binary(a)) == n)
return a;
}
}
int minmax(int a, int n)
{
while(a--)
{
if(count1(int2binary(a)) == n)
return a;
}
}
int main(void)
{
int a = 5;
string istr = int2binary(a);
cout << "a = " << a << endl << "a的二进制表示为:" << istr << endl;
//int n = count1(istr);
int n = count2(a);
cout << "a中1的个数为:" << n << endl;
cout << "与a二进制中1个数相同,比a大的整数中最小的是:" << maxmin(a, n) << endl;
cout << "与a二进制中1个数相同,比a小的整数中最大的是:" << minmax(a, n) << endl;
return 0;
}
Q5.3
最新推荐文章于 2019-10-17 17:15:20 发布