题面
不得不说,这真的是一道二进制好题!!!
思路转换得极其精妙,看得我不禁连连叫好!!!
一般看到类似的与二进制运算符有关的题目,按位进行肯定是首要考虑的。
我们考虑在按位进行二进制运算时的性质:
从上图可以看出,当运算符是 ∣ | ∣且下一位数字是 1 1 1时,结果一定是 1 1 1;当运算符是&且下一位是 0 0 0时,结果一定是 0 0 0。
从上图可以看出,当运算符是 ∣ | ∣且下一位是 0 0 0时,值不发生改变;当运算符是&且下一位是 1 1 1时,值不发生改变。
那么,试想,如果我们用 0 0 0和 1 1 1分别表示 ∣ | ∣和&,那么,一个操作序列 o p op op,就可以用二进制表示了。这有什么用呢?
把对应的 o p op op序列与上图的性质进行对比,你会发现,当 o p op op的数与进行操作的数相同时,对结果不造成影响;不同时,会被操作的数覆盖原先值。比如: 00 对 应 ∣ 0 00对应|0