You need to enable JavaScript to run this app. 如何求解按位不等式:在[L,R]区间内查找满足异或比较条件的整数M
优惠活动
大模型
产品
解决方案
定价
更多

如何求解按位不等式:在[L,R]区间内查找满足异或比较条件的整数M

核心判定原理

对任意两个非负整数A、B,A⊕B < A 的充要条件为:B的最高有效位对应的二进制位,在A的表示中是1。
推导逻辑非常直接:

  • 数B的最高有效位,是其二进制表示中最靠左的1所在的位置(记为第m位,对应权重2^m),所有比m更高的二进制位上B的值都是0。
  • 对比A和A⊕B的大小时,比m更高的位上,异或结果和A本身完全一致(B在这些位都是0,异或0不会改变原值),因此整体的大小差异完全由第m位决定:
    • 如果A的第m位是1,异或后这一位变为0,最终的异或结果必然小于A;
    • 如果A的第m位是0,异或后这一位变为1,最终的异或结果必然大于A。
具体定位步骤

套用到题目场景,A就是预先计算得到的区间异或和XR,B就是要找的M,全程O(1)复杂度,完全适配1e16的规模限制:

  1. 按已有方法计算区间[L,R]的连续异或结果XR。
  2. 提取XR的所有二进制置位位(即所有满足XR & (1 << m) !=0的位置m)。
  3. 对每个置位位m,判断区间[L,R],和「最高有效位为m的所有数组成的区间[2^m, 2^(m+1)-1]」是否存在交集:
    • 两个区间有交集的判定条件为:L <= 2^(m+1)-1 且 2^m <= R。
    • 只要找到任意一个满足条件的m,交集中的任意数就是符合要求的M,直接取M = max(L, 2^m)即可,这个值必然落在[L,R]范围内,且满足不等式要求。
  4. 如果遍历完XR的所有置位位,都没有找到存在交集的情况,说明不存在符合条件的M。

注意:因为L、R最大到1e16,计算2^m、2^(m+1)-1时必须使用64位整数类型存储,避免移位溢出。

场景验证
  • 当XR=0时,没有任何置位位,直接判定不存在符合条件的M:此时不等式为0⊕M <0,等价于M<0,与题目中M≥1的约束矛盾。
  • 反例:取L=2、R=3,计算XR=2⊕3=1,置位位只有m=0,对应区间[1,1],和[2,3]无交集,因此不存在M。实际计算两个候选值:1⊕2=3>1,1⊕3=2>1,与结论一致。
  • 正例:取L=3、R=5,计算XR=3⊕4⊕5=2,置位位为m=1,对应区间[2,3],和[3,5]的交集为3,取M=3,计算得2⊕3=1<2,完全符合要求。

内容的提问来源于stack exchange,提问作者Mehedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 21:45:08