class Solution {
public:
    void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
        int ans = 0;
        for(int d: data)
            ans ^= d;
        *num1 = ans; *num2 = ans;
        int tmp = ans &(~ans+1);    //取最右边1
        for(int d: data){
            if(tmp&d)
                *num1 ^= d;
            else
                *num2 ^= d;
        }
    }
};