#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;
}

相关文章:

  • 2021-10-22
  • 2022-12-23
  • 2021-07-13
  • 2021-06-13
  • 2022-12-23
猜你喜欢
  • 2021-08-08
  • 2021-06-15
  • 2022-02-08
  • 2022-12-23
  • 2022-12-23
  • 2022-01-19
相关资源
相似解决方案