我在论坛中提到了n
数字的数组:
arr[0........n-1]
以下条件成立,^
是xor
运算符`
f(l,r) = f(0,r) ^ f(0,l-1)
其中f(l,r) = arr[l]^arr[l+1]^........arr[r]
我检查了上面的数组数量以及l
和r
以及 YES 的不同值,这是真的。但我不明白怎么做?
有人可以解释一下这背后的逻辑吗?
答案 0 :(得分:3)
使用XOR的最简单属性
f(0,r) ^ f(0,l-1) = f(l,r)
=> (f(0,r) ^ f(0,l-1)) ^ f(0,l-1) = f(0,l-1) ^ f(l,r)
=> f(0,r) = f(l,r) ^ f(0,l-1) [Since XOR is associative f(0,l-1) ^ f(0,l-1) = 0 and x ^ 0 = x]
=> f(0,r) = (arr[0]^...arr[l-1])^(arr[l]^...^arr[r])
是f(0,r)
的定义。
答案 1 :(得分:0)
数字arr [0 ... r]可以看作两部分arr [0 ... l-1],arr [1 ... r] 所以f(0,r)= f(0,l-1)^ f(l,r),分别处理这两个部分。
在f(l,r)= f(0,r)^ f(0,l-1)中,f(0,l-1)取消f(0,l-1)in f(0 ,r)将f(l,r)留在后面。