问题描述
C++中int型整数内码是一个32位的01序列,该01序列有些是对称的,有些是不对称的。对于给定的一个整数,在一些场合,需要判断其整数内码的对称性。这个事情要做好还非你不行呢。
输入
输入中含有一些整数n(0≤n〈2^32)。
输出
统计其中一共有多少个其内码对称的整数,输出之。
样例输入
0
1
2147483649
2
3
样例输出
2
#include<iostream>
#include<iomanip>
#include<vector>
#include<string>
#include<cmath>
#include <algorithm>
#include<stack>
using namespace std;
int main()
{
long long int s;
int x = 0;
while (cin >> s)
{
vector<int>p;
if(s>0)
{
while (s != 0)
{
p.insert(p.begin(), (s % 2));
s = s / 2;
}
}
else if (s == 0)
{
p.push_back(0);
}
int len = p.size();
for (int i = 0; i < 32 -len ; i++)
{
p.insert(p.begin(), 0);
}
// p.resize(32, 0);
vector<int>q;
len = p.size();
for (int i = 0; i < len; i++)
{
// cout << p[i];
q.insert(q.begin(), (p[i]));
}
if (q == p)
{
x += 1;
}
// cout << endl;
}
cout << x << endl;
}