#include<stdio.h>
#include<Windows.h>
int main()
{
int arr[] = {1, 2, 3, 4, 5, 16, 78, 1, 2, 3, 4, 5};
int i = 0;
int j = 0;
int num = 0;
int a = 0;
int b = 0;
int size = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < size; i++)
{
num^= arr[i];
}
for (i = 0; i < 32; i++)
{
if ((num >> i) & 1 == 1)
{
break;
}
}
for (j = 0; j < size; j++)
{
if ((arr[j] >> i) & 1 == 1)
{
a ^= arr[j];
arr[j] = 0;
}
}
for (j = 0; j < size; j++)
{
b ^= arr[j];
}
printf("%d %d\n",a,b);
system("pause");
return 0;
}
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现。
最新推荐文章于 2022-09-22 19:36:02 发布