1. 程式人生 > >find your present (2)

find your present (2)

題意是找出一些數字(奇數個)中出現奇數次得數。看了題解一會才會的,此題涉及到異或,表示有點蒙。
1、一個數異或本身恆等於0,如5^5恆等於0;

2、一個數異或0恆等於本身,如5^0恆等於5。

3 滿足交換律

822833885=5; 用來尋找一串數字中唯一odd次出現的數

所以顯然用異或運算是很完美的解法
在這裡插入圖片描述

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    int n,ans,a;
    while(scanf("%d",&n)!=EOF)
{ if(n==0)break; scanf("%d",&ans); for(int i=1;i<n;i++){ scanf("%d",&a); ans^=a; } printf("%d\n",ans); } return 0; }