#include <stdio.h>
int getSingleOccurrence(int nArray[], int n){
int ones = 0, twos=0;
int common_bit_mask=0;
int i;
for(i=0;i<n;i++){
twos|= ones & nArray[i];
ones^=nArray[i];
common_bit_mask = ~(ones & twos);
ones&=common_bit_mask;
twos&=common_bit_mask;
}
return ones;
}
int main(){
int nArray[]={3,3,1,3,6,1,6,7,1,6};
int result = getSingleOccurrence(nArray,10);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgZ2V0U2luZ2xlT2NjdXJyZW5jZShpbnQgbkFycmF5W10sIGludCBuKXsKaW50IG9uZXMgPSAwLCB0d29zPTA7CmludCBjb21tb25fYml0X21hc2s9MDsKaW50IGk7Cgpmb3IoaT0wO2k8bjtpKyspewogICAgdHdvc3w9IG9uZXMgJiBuQXJyYXlbaV07CiAgICBvbmVzXj1uQXJyYXlbaV07CiAgICBjb21tb25fYml0X21hc2sgPSB+KG9uZXMgJiB0d29zKTsKICAgIG9uZXMmPWNvbW1vbl9iaXRfbWFzazsKICAgIHR3b3MmPWNvbW1vbl9iaXRfbWFzazsKfQpyZXR1cm4gb25lczsKfQoKCmludCBtYWluKCl7CiAgIGludCBuQXJyYXlbXT17MywzLDEsMyw2LDEsNiw3LDEsNn07CiAgIGludCByZXN1bHQgPSBnZXRTaW5nbGVPY2N1cnJlbmNlKG5BcnJheSwxMCk7CiAgIHByaW50ZigiUmVzdWx0ICVkIiwgcmVzdWx0KTsKICAgcmV0dXJuIDA7Cn0=