数组中只出现一次的数字

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
 
#include<stdlib.h>
#include<iostream>
#include<stdio.h>
#include<vector>
#include<time.h>
#include<set>
#include<map>
#include<assert.h>
#include<string>
#include<stack>
using namespace std;
void find_data(int *data,int n)
{
    int axor=0,data1=0,data2=0;
    for(int i=0;i<n;i++)
     axor^=data[i];
    axor=axor-(axor&(axor-1));
    for(int i=0;i<n;i++)
    {
       if(data[i]&axor)
           data1^=data[i];
       else data2^=data[i];
    }
       int a,b;
       a=min(data1,data2);
     b=max(data1,data2);
    printf("%d %d\n",a,b);
 
}
int main()
{
    int tnums;
      int value[1000005];
    while(scanf("%d",&tnums)==1)
    {
        for(int i=0;i<tnums;i++)
            scanf("%d",&value[i]);
        find_data(value,tnums);
     
    }
         return 0;
}
/**************************************************************
    Problem: 1351
    User: billforum
    Language: C++
    Result: Accepted
    Time:950 ms
    Memory:5344 kb
****************************************************************/
posted @ 2012-08-25 16:02  wuzhibin  阅读(161)  评论(0编辑  收藏  举报