如果给定array(XOR)array[1:],则查找一个数组



假设我们有数组a,第二个数组b = a[1:](只是删除的第一个元素)。数组c是异或运算的结果,c[i] = a[i]*b[i] (0<=i<len(b))。如果我们知道c,我们能找到数组a吗?我们还得到了一个[0:7]>

证明你不能很简单。

ca少一个元素。如果c以完全可恢复的方式表示与a相同的信息,则可以以相同的方式压缩c,一次又一次,直到只剩下一个元素。显然这个变换是有损的。

反过来说,没有唯一的方法来选择给定异或的一对数字。无论你选择哪一个数字作为第一个,都有一个解。

然而,给定ca的任何元素,您可以完全恢复a。在已知(x ^ y) ^ y = x ^ (y ^ y) = xc[i] = a[i] ^ a[i + 1]的情况下,在给定a[i]的情况下,很容易展开a的值。

为了不失去一般性,让我们假设给定a[0]。从c[0] = a[0] ^ a[1]开始,我们得到了a[1] = c[0] ^ a[0]。现在您可以找到a[2] = c[1] ^ a[1],以此类推所有a[i]

相关内容

  • 没有找到相关文章

最新更新