小米OJ #73【找出單獨出現的數字2】
阿新 • • 發佈:2018-12-12
描述
給出一個數組,陣列中的數字皆為正整數,除了某一個數字,其他的數字都會出現三次。 找出那個只出現一次的數。
輸入
3n+1的正整數陣列,使用逗號(,)分隔(n>0)
輸出
單獨出現的數字
輸入樣例
2,3,2,2 5,1,4,5,4,5,4
輸出樣例
3 1
題解:
#include <iostream> #include <bits/stdc++.h> using namespace std; int a[1000000]; int Find(int a[], int n){ int bits[32]; memset(bits, 0, sizeof bits); for(int i = 0; i < n; i++) for(int j = 0; j < 32; j++) bits[j] += ((a[i]>>j)&1); int res = 0; for(int j = 0; j < 32; j++) if(bits[j]%3 != 0) res += (1<<j); return res; } int main() { char line[1000001]; while (cin.getline(line, 1000000)) { int x = 0, id = 0; char *p = strtok(line, ","); while(p){ sscanf(p, "%d", &x); a[id++] = x; p = strtok(NULL,","); } cout << Find(a, id) << endl; } return 0; }