1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 int bit[32];/*储存n个数1 - 32位1的个数*/ 6 int value, n; 7 int main() 8 { 9 while (~scanf("%d", &n)) { 10 memset(bit, 0, sizeof(bit)); 11 for (int i = 0; i < n; ++i) { 12 scanf("%d", &value); 13 for (int i = 0; i < 32; ++i) { 14 bit[i] += (value >>i) & 1; 15 } 16 } 17 value = 0; 18 for (int i = 0; i < 32; ++i) { 19 value |= (bit[i] % 3) <<i;/*这里的%3是重点, 因为出了特殊的那个数,其他数1的个数必定是3的倍数,%3就是得到特殊数的第i位*/ 20 } 21 printf("%d\\n", value); 22 } 23 }