# include <stdio.h>int findFirstOne(int num)
{
int flag = 1;
intcount = 0;
while (flag)
{
if (num & flag == 1)
break;
flag << 1;
count++;
}
returncount;
}
int isOne(int num,intindex)
{
if ((num & (1<<index)) == 1)
return1;
elsereturn0;
}
void findTwoNumbers(int arr[],int len)
{
int i = 0;
int ret = 0;
int result = 0;
int num1 = 0;
int num2 = 0;
for (i = 0;i < len; i++)
{
result ^= arr[i];
}
ret = findFirstOne(result);
for (i = 0;i < len;i++)
{
if (isOne(arr[i],ret) == 1)
{
num1 ^= arr[i];
}
else
{
num2 ^= arr[i];
}
}
printf ("%d %d\n",num1,num2);
}
int main()
{
int arr[] = {1,2,5,2,4,3,3,1};
int len = sizeof (arr)/sizeof (arr[0]);
findTwoNumbers(arr,len);
return0;
}