1

实际上,我试图解决 Hackerrank 中的“Xoring Ninja”。

https://www.hackerrank.com/challenges/xoring-ninja/problem

令 A 为 N 个元素的集合 {a1, a2, ......, aN}

集合 A 的 XORSUM 在这里定义为 A 的所有非空子集的 XOR 之和。

令 S = XORSUM

S = (a1 + a2 + ... + aN) + [(a1 ^ a2) + (a1 ^ aN) + ..] + {3 个大小的子集} + ... + (a1 ^ a2 ^ .... . ^ 一N)

令 T = (a1 ^ a2 ^ .... ^ aN)

那么 S = T ^ (S - T)

S ^ S = S ^ T ^ (S - T)

0 = T ^ S ^ (S - T)

T ^ 0 = T ^ T ^ S ^ (S - T)

T = S ^ (S - T)

我想知道如何用位运算符解决任何涉及 + - * / 的方程?

4

1 回答 1

0

异或 (A - 4) = 5

5 的二进制表示是 101,所以我们知道 A 和 A-4 具有相同的位值,除了第一个和第三个(从右到左)。由于第四位不变(否则该数字将大于或等于 8),所以 A 的第三位是 1,但最重要的线索是 5 是奇数,我们将 A 与 A - 4 进行异或运算。我们知道一个数的最后一位的值决定了它是对还是奇数,我们知道如果它是奇数,对一个整数减去或加一个对数会使其为奇数,如果是对数,则将其保留为对数,因此,如果 A 是奇数,A - 4 将是奇数,如果 A 是对子,则 A - 4 将是对子。一个对数与另一个对数或一个奇数与另一个奇数按位异或将产生一个对数。所以,

This is how you can solve it in your mind. Of course, a more detailed explanation could be given for each type of equation, but the solution of any equation type involving bitwise operations is a complete field which spans beyond the borders of a SO answer. If you want to program this, then you will have a difficult project to implement, but always start from the simplest, the evident.

于 2018-01-08T14:09:48.603 回答