1 条题解

  • 0
    @ 2026-9-9 8:55:49

    题解

    思路

    若 X<NX<N,等式会变成 XXORN=XX\mathbin{\mathrm{XOR}}N=X,不可能成立。

    做法

    逐位比较可得 XXORN≥X−NX\mathbin{\mathrm{XOR}}N\ge X-N;把 XX 写成商和余数后可推出商至多为 11,故相容数一定满足 N≤X<2NN\le X<2N。此时余数是 X−NX-N,而异或与减法相等当且仅当 XX 在 NN 的每个为 11 的二进制位上也为 11。因此,相容数正是区间 [N,2N)[N,2N) 内所有包含 NN 的全部置位的整数。

    忽略上界时,这些整数从小到大的顺序恰好对应:把 K−1K-1 的二进制位从低到高依次填入 NN 从低到高的零位,再与 NN 合并。这样构造出的 XX 就是满足置位包含关系的第 KK 小整数;最后检查 X<2NX<2N,不满足则说明相容数不足 KK 个,输出 −1-1。

    复杂度

    每组询问时间复杂度为 O(log⁡N+log⁡K)O(\log N+\log K),额外空间复杂度为 O(1)O(1),构造过程使用 64 位整数。

    • 1

    信息

    ID
    1537
    时间
    2000ms
    内存
    1024MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者