博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
#include "stdafx.h"

int find_first_1(int n)
{
	int index = 1;
	while( (n&1)==0 && index < 32)
	{
		n >>= 1;
		index <<= 1;
	}
	return index;
}
void find(int * arr, int len, int & num1, int & num2)
{
	int temp = 0;
	for(int i=0;i<len;i++)
		temp ^= arr[i];
	unsigned int index = find_first_1(temp);

	num1 = 0;
	num2 = 0;
	for(int i=0;i<len;i++)
	{
		if((arr[i]&index)==0)
			num1^=arr[i];
		else
			num2^=arr[i];
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	int num1,num2;
	int arr[] = {2,2,3,100,4,5,4,5};
	find(arr,8,num1,num2);
	printf("%d %d\n",num1,num2);
	return 0;
}