思路来源:https://zhuanlan.zhihu.com/p/601310942
题意:
给定 x, 求 a, b。 a,b 满足 a ⊕ b = x , a ⊕ b = a + b 2 a \oplus b = x, a\oplus b = \frac{a + b}{2} a⊕b=x,a⊕b=2a+b
题解:
根据第二个表达式, a + b = 2 ∗ ( a ⊕ b ) a + b = 2 * (a\oplus b) a+b=2∗(a⊕b),即 ( a ⊕ b ) (a \oplus b) (a⊕b) 的二进制形式要左移一位等于 a + b. 因此 x 的二进制形式中不能存在连续的1,且末尾不能为 1. 否则 a + b 无法通过进位来进行左移。考虑构造当 x 为 1时, a , b a,b a,b 分别为 1 0 或 0 1 1\ 0 或 0\ 1 1 0或0 1 且x 后面的第一个0, a , b 为 1 1 a, b 为 1\ 1 a,b为1 1, 其他零为 0 0 0\ 0 0 0 ,这样即可通过进位来实现左移。