1. 程式人生 > >計蒜客————單獨的數字

計蒜客————單獨的數字

  •  28.46%
  •  1000ms
  •  65536K

給定一個數組 AA,除了一個數出現一次之外,其餘數都出現三次。找出出現一次的數。

如:\{1, 2, 1, 2, 1, 2, 7\}{1,2,1,2,1,2,7},找出 77

你的演算法只能是線性時間的複雜度,並且不能使用額外的空間哦~

輸入格式

第一行輸入一個數 n(1 \leq n \leq 500)n(1n500),代表陣列的長度。

接下來一行輸入 nn 個 int 範圍內(-2147483648\ldots 214748364721474836482147483647)的整數,表示陣列 AA。保證輸入的數組合法。

輸出格式

輸出一個整數,表示陣列中只出現一次的數。

樣例輸入

4
0 0 0 5

樣例輸出

5
int 二進位制下共32位,每出現3個數,統計可得32位出現次數餘3為0,若只出現一次,其出現次數餘3為1,所以通過統計 各個 位數出現次數,判斷多出來什麼數。。
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
using namespace std;
int main()
{
    int N;
    while(cin>>N)
    {
        int  com[32]= {};
        while(N--)
        {
            int temp;
            cin>>temp;
            for(int i=0; i<32; i++)
                com[i]+=((temp>>i)&1);
        }
        int pow2=1,ans=0;
        for(int i=0; i<32; i++)
        {
            ans+=pow2*(com[i]%3);
            pow2*=2;
        }
        cout<<ans<<endl;
    }
    return 0;
}