Как решить уравнения XOR, такие как A xor ( A - 4 ) = 5?

На самом деле я пытаюсь решить "Xoring Ninja" в Hackerrank.

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

Пусть A — множество из N элементов {a1, a2, ......, aN}

XORSUM множества A определяется здесь как сумма XOR всех непустых подмножеств A.

Пусть S = XORSUM

S = (a1 + a2 + ... + aN) + [(a1 ^ a2) + (a1 ^ aN) + ..] + {подмножества 3 размеров} + ... + (a1 ^ a2 ^ .... . ^ аН)

Пусть 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)

Я хотел знать, как решать любые уравнения, включающие + - * / с побитовыми операторами?


person Pawan Kumar    schedule 08.01.2018    source источник


Ответы (1)


Исключающее ИЛИ (А - 4) = 5

Двоичное представление 5 равно 101, поэтому мы знаем, что A и A - 4 имеют одинаковые битовые значения, за исключением первого и третьего (справа налево). Поскольку четвертая цифра не изменилась (иначе число было бы больше или равно 8), поэтому третий бит A был равен 1, но самая важная подсказка заключается в том, что 5 нечетно, и мы выполняем XOR A с A - 4. Мы знаем, что значение последнего бита числа определяет, является ли оно парным или нечетным, и мы знаем, что вычитание или добавление парного числа к целому числу оставит его нечетным, если оно было нечетным, и оставит его парным, если оно было парным, Таким образом, A - 4 будет нечетным, если A было нечетным, и будет парным, если A было парным. Побитовое исключающее ИЛИ пары чисел с другим парным числом или нечетного числа с другим нечетным числом приведет к парному числу. Таким образом, XOR (A - 4) = 5 не имеет решения для целых чисел без знака, если для них выделено бесконечное пространство памяти.

Вот как вы можете решить это в уме. Конечно, для каждого типа уравнения можно было бы дать более подробное объяснение, но решение любого типа уравнения, включающего побитовые операции, представляет собой полное поле, выходящее за границы ответа SO. Если вы хотите запрограммировать это, то у вас будет сложный проект для реализации, но всегда начинайте с самого простого, очевидного.

person Lajos Arpad    schedule 08.01.2018