题目描述
现给你一组数,要求你找出其中只出现过一次的那个数。题目保证只有一个数字出现过一次,并且除了只出现一次的那个数字外,其余的数字均出现了偶数次。
输入
输入包含多组测试样例。每组样例第一行为一个正整数n(1<=n<=1000000,并且n为奇数),表示数字的个数。
接下来的一行为n个正整数,所有的数都小于2^31。
当n=0时,输入结束。
输出
输出只出现过一次的那个数字,每组结果占一行。
样例输入
5 1 1 3 2 2 3 1 2 1 0
样例输出
3 2
解题思路:
使用算法:异或算法
算法分析:
首先让我们了解下异或的概念:若a、b两个值不相同,则结果为1。如果a、b两个值相同,结果为0。
那么我们可以得到:和同一个数自己异或偶数次结果为0,之后再与那个出现了奇数次的数异或,便得到了答案
代码:
#include<bits/stdc++.h>