Найдите все возможные пары с заданными значениями побитового ИЛИ и побитового исключающего ИЛИ
Для заданных двух положительных целых чисел A и B , представляющих побитовое исключающее ИЛИ и побитовое ИЛИ двух положительных целых чисел, задача состоит в том, чтобы найти все возможные пары (x, y) такие, что x ^ y равно A и x | у равно В .
Примеры:
Input: A = 5, B = 7
Output:
2 7
3 6
6 3
7 2
Explanation:
7( XOR )2 = 5 and 7( OR )2 = 7
3( XOR )6 = 5 and 3( OR )6 = 7Input: A = 8, B = 10
Output:
2 10
10 2
Наивный подход: самый простой подход к решению проблемы — сгенерировать все возможные пары и для каждой пары проверить, равны ли их побитовое XOR и побитовое ИЛИ A и B соответственно.
Временная сложность: O(B 2 )
Вспомогательное пространство: O(1)
Эффективный подход: Идея состоит в том, чтобы пройти через все возможные значения x и использовать свойство исключающего ИЛИ , что если x ^ y = A , то x ^ A = y , чтобы найти все возможные значения y . Выполните следующие шаги, чтобы решить проблему:
- Итерируйте от 1 до B , используя переменную, скажем i , и выполните следующие операции:
- Инициализируйте переменную y как i ^ A .
- Проверьте, больше ли значение y 0 и (i | y) равно B или нет.
- Если окажется, что это правда, то выведите значения i и y .
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O(B)
Вспомогательное пространство: O(1)