7-1 汉明距离 (5分)
两个整数间的汉明距离指的是这两个数对应二进制位不同的位置的数目。输入两个整数x,y, 0<=x,y<=231。输出x,y的汉明距离。
输入格式:
在一行输入x,y。
输出格式:
在一行输出x,y汉明距离。
输入样例:
在这里给出一组输入。例如:
1 4
输出样例:
在这里给出相应的输出。例如:
2
#include<stdio.h>
int main() {
long long z1[100000]={0}, z2[100000]={0}, y1, y2, num1 = 0, num2 = 0, sum = 0;
scanf("%d%d", &y1, &y2);
do {
z1[num1++] = y1 % 2;
y1/=2;
} while(y1 != 0);
do {
z2[num2++] = y2 % 2;
y2/=2;
} while(y2 != 0);
if(num1 > num2) {
for(int i = 0; i < num1; i++) {
if(z1[i] != z2[i]) sum++;
}
} else {
for(int i = 0; i < num2; i++) {
if(z1[i] != z2[i]) sum++;
}
}
printf("%d", sum);
}