本题考查位运算恒等式与对「拆分后异或」的一次观察,不必对每个 m 枚举 y。
调度模块要把一个非负整型额度 m 拆成两份:任选整型 y(0≤y≤m),另一份为 m−y。定义这次拆分的「对冲值」为
G(y)=y⊕(m−y)其中 ⊕ 为按位异或(对应二进制位相同得 0、不同得 1)。例如 6 (1102) 与 1 (0012) 满足 6 xor 1=7 (1112)。现给定若干个额度,请对每个 m 求出可取到的最小对冲值。
第一行一个整型 n (1≤n≤105),表示随后有 n 行额度。
接下来 n 行,每行一个整型 m (1≤m≤1018)。
请对每个 m 逐一计算其最小对冲值。
共输出 n 行;对于每一个 m,写出一个非负整型,即
min(0⊕m, 1⊕(m−1), 2⊕(m−2), …, m⊕0)输入
3
4
5
11
输出
0
1
3
说明
三个额度依次为 4,5,11:取 y=2 时 2⊕2=0;取 y=2 时 2⊕3=1;取 y=4 时 4⊕7=3。
输入
2
2
7
输出
0
7
说明
额度 2:取 y=1 得 1⊕1=0。额度 7:枚举可知最小对冲值为 7。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册