找球號(三)南陽acm528(異或' ^ ')
阿新 • • 發佈:2018-08-17
result 包括 -i The spl 別人 search 都是 else
找球號(三)
時間限制:2000 ms | 內存限制:10000 KB 難度:2- 描述
-
xiaod現在正在某個球場負責網球的管理工作。為了方便管理,他把每個球都編了號,且每個編號的球的總個數都是偶數。有一天,xiaod發現少了一個球,你能幫他找出丟的那個球的球號嗎?
- 輸入
- 有多組測試數據。每組數據包括兩行。
第一行是一個整數N(0<N<1000000),表示現在所剩的球數。
隨後的一行是N個數,表示所剩的各個球的編號M(0<M<10^9)。 - 輸出
- 對於每組數據,輸出弄丟的那個球的球號。
- 樣例輸入
-
5 1 1 3 6 6 3 1 2 1
- 樣例輸出
-
3 2
- 來源
- hdu改編
- 上傳者
- ACM_丁國強
- 算法思想:剛開始我是想要數組存儲這n個數,然後從小到大快速排序,只要找到某個數的個數為奇數時,就輸出,可惜內存超了,無奈~~代碼如下:
-
1 #include<stdio.h> 2 #include<stdlib.h> 3 int a[1000005]; 4 int f(const void *a,const void *b) 5 { 6 return *(int*)a-*(int*)b; 7 } 8 int main() 9 { 10 int n,i,t,ans,k; 11 while(scanf("%d",&n)!=EOF) 12 { 13 for(i=0; i<n; i++) 14 scanf("%d",&a[i]);
後來網上看了別人的,利用異或來做(大佬),思想是因為丟失的那個球號必定是奇數,所以對所有球號進行排查,必定找出。那什麽是異或呢?比如:5和6異或,5的二進制101,6的二進制110等於011也就是3,兩個相同的數異或時為0。具體看代碼實現:
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int n; 6 while(cin>>n) 7 { 8 int a,b = 0; 9 while(n--) 10 { 11 cin>>a; 12 b^=a; 13 } 14 cout<<b<<endl; 15 } 16 return 0; 17 }
找球號(三)南陽acm528(異或' ^ ')