class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param arr intvector
     * @param k int
     * @return int
     */
    int foundOnceNumber(vector<int>& arr, int k) {
        // 1. binarySum求二进制的每一位的1出现累计次数
        vector<int> binarySum(32);
        for (int i = 0; i < 32; ++i) {
            int sum = 0;
            for (int& x : arr) {
                // x >> i & 1 用于判断x的第i位数字是否为1
                sum += (x >> i & 1);
            }
            binarySum[i] = sum;
        }
        int res = 0;
        for (int i = 0; i < 32; ++i) {
            if (binarySum[i] % k == 0)   continue;
            // 1 << i 说明第i位置是1 通过 | 或运算求res
            res |= 1 << i;
        }
        return res;
    }
};