101,102找出不同数

第一题:101个数中只有一个数字不同,找出这个数

第二题:102个数字,有两个互不相同的数和其他数字不同,找出这两个数

 1 int main(int argc,char* argv[])
 2 {
 3     //101个数有一个不一样的
 4     int arr[101];
 5     for(int i=0 ; i<101 ; ++i)
 6         arr[i]=5;
 7     arr[66]=66;
 8 
 9     int tmp=arr[0];
10     for(int i=1 ; i<101 ; ++i)
11         tmp=arr[i]^tmp;
12     printf("101不同的数字为:%d\n",tmp);
13 
14     //102个数有2个不一样的
15     int* arr2=(int*)malloc(102*sizeof(int));
16     for(int i=0 ; i<102 ; ++i)
17         arr2[i]=66;
18     arr2[66]=77;
19     arr2[88]=99;
20     int tmp2=0;
21     for(int i=0 ; i<102 ; ++i)
22         tmp2=tmp2^arr2[i];
23     int tool=((~tmp2)+1)&tmp2,num1=0,num2=0;
24     
25     for(int i=0 ; i<102 ; ++i)
26     {
27         //printf("%d ^ %d  num1=%d   num2=%d\n", i ,arr2[i],num1,num2);
28         if((arr2[i] & tool) == 0)            //【warning】“==”优先级比“&”要高,前面的与运算要加括号
29             num1=num1^arr2[i];
30         else
31             num2=num2^arr2[i];
32     }
33     printf("102不同数字1:%d 不同数字2:%d\n",num1,num2);
34 
35     free(arr2);
36 
37     system("pause");
38     return 0;
39 }

 

posted on 2015-04-30 14:54  Evence  阅读(300)  评论(0编辑  收藏  举报