Problem Description
In the new year party, everybody will get a "special present".Now it's your turn to get your special present, a lot of presents now putting on the desk, and only one of them will be yours.Each present has a card number on it, and your present's card number will be the one that different from all the others.For example, there are 5 present, and their card numbers are 1, 2, 3, 2, 1.so your present will be the one with the card number of 3, because 3 is the number that different from all the others.
Input
The input file will consist of several cases.
Each case will be presented by an integer n (1<=n<=200, and n is odd) at first. Following that, n positive integers will be given in a line. These numbers indicate the card numbers of the presents.n = 0 ends the input.
Each case will be presented by an integer n (1<=n<=200, and n is odd) at first. Following that, n positive integers will be given in a line. These numbers indicate the card numbers of the presents.n = 0 ends the input.
Output
For each case, output an integer in a line, which is the card number of your present.
Sample Input
5 1 1 3 2 2 3 1 2 1 0
Sample Output
3 2#include<stdio.h> int main() { int n; while(~scanf("%d",&n)&&n) { int a=0,x,i; for(i=0;i<n;i++) { scanf("%d",&x); a^=x; } printf("%d\n",a); } return 0; }
若需要交换两个变量的值,除了通常使用的借用中间变量进行交换外,还可以利用异或,仅使用两个变量进行交换,如:
1
2
3
|
a=a^b;
b=b^a;
a=a^b;
|
祥解:
1
2
3
|
a1=a^b
b=a1^b
a=a1^b=a1^(a1^b)=a1^a1^b=b
|
集合:
1
|
a=a^b^(b=a);
|
这样就完成了a与b的交换。
综上:同一变量与另一变量和其异或值异或等于自身。
用例:可使用于加密算法某一环节或更多环节,使算法更复杂,不易被破解,安全性更高。
口诀:相同取0,相异取1