2016-08-08 2 views
2

I форум упоминается, что данный массив n номеров:Может кто-нибудь объяснить следующее XOR свойство

arr[0........n-1] 

Следующая Conditon трюмы, ^ является xor оператор `

f(l,r) = f(0,r)^f(0,l-1) 

где f(l,r) = arr[l]^arr[l+1]^........arr[r]

Я проверил вышеприведенное количество массивов и различные значения l и r и ДА, это правда. Но я не понимаю, как?

Может кто-нибудь объяснить логику этого?

+7

Запишите расширение для 'f (0, r)^f (0, l-1)', а затем отмените условия. –

ответ

0

Номера arr [0 ... r] можно рассматривать как две части arr [0 ... l-1], arr [1 ... r] , поэтому f (0, r) = f (0, 1-1)^f (l, r), рассматривая две части отдельно.

В f (l, r) = f (0, r)^f (0, l-1) f (0, l-1) отменяется с f (0, l-1) в f (0, r), оставляя f (l, r) позади.

2

Используйте простейшее свойство 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).

Смежные вопросы