Description
C++中int型整数内码是一个32位的01序列,该01序列有些是对称的,有些是不对称的。对于给定的一个整数,在一些场合,需要判断其整数内码的对称性。这个事情要做好还非你不行呢。
Input
输入中含有一些整数n(0≤n〈2^32)。
Output
统计其中一共有多少个其内码对称的整数,输出之。
Sample Input
0
1
2147483649
2
3
Sample Output
2
个人思路:
这个题比较简单,只要是用unsigned int 存储就能很好地储存0~2^32-1的数。
示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main()
{
unsigned int n;
int sum = 0;
unsigned int num[32];
int flag, i;
while(scanf("%u", &n) != EOF)
{
flag = 0;
if(n == 0)
{
sum++;
}
else if(n < 32768+65536)
{
continue;
}
else
{
for(i=0; i<32; i++)
{
num[i] = n%2;
n = n/2;
}
for(i=0; i<16; i++)
{
if(num[i] != num[31-i])
{
flag = 1;
break;
}
}
if(flag == 0)
{
sum++;
}
}
}
printf("%d\n", sum);
return 0;
}