補充小小。下面係四個有關XOR (^ operator in C/C++) 嘅property
1. a ^ a = 0
2. a ^ 0 = a
3. a ^ b = b ^ a // commutative
4. (a ^ b) ^ c = a ^ (b ^ c) // associative
3 同 4 加埋保證XOR一推數時,次序唔會應響結果。例如
1 ^ 2 ^ 3 ^ 4 = 4 ^ 3 ^ 2 ^ 1 = 1 ^ 4 ^ 2 ^ 3 = 3 ^ 1 ^ 4 ^ 2
如果一堆數目除咗一個單丁外其他係重複,例如:
1,2,3,4,1,3,4
XOR 晒:
1 ^ 2 ^ 3 ^ 4 ^ 1 ^ 3 ^ 4
= 1 ^ 1 ^ 2 ^ 3 ^ 3 ^ 4 ^ 4 // 3. + 4. order does not matter
= (1^ 1) ^ 2 ^ (3 ^ 3) ^ (4 ^ 4)
= 0 ^ 2 ^ 0 ^ 0 // 1. a ^ a = 0
= 2 // 2. a ^ 0 = a