在 Python 中使用 XOR 计算某个范围内的对的程序

假设我们有一个数组 nums 并且有两个值 l 和 r,我们必须找到好的对的数量。这里一个不错的对是一对 (i, j),其中 0 <= i < j < nums 的大小和 l <= (nums[i] XOR nums[j]) <= r。

因此,如果输入类似于 nums = [4,1,7,2] l = 2 r = 6,那么输出将为 6,因为好的对是 (1,0): 1 XOR 4 = 5, (1 ,2): 1 XOR 7 = 6, (1,3): 1 XOR 2 = 3, (0,3): 4 XOR 2 = 6, (0,2): 4 XOR 7 = 3, (2,3 ): 7 异或 2 = 5。

示例

让我们看下面的实现来更好地理解

from collections import Counter

def solve(nums, l, r):

   def test(nums, x):

      count = Counter(nums)

      res = 0

      while x:

         if x & 1:

            res += sum(count[a] * count[(x - 1) ^ a] for a in count)

         count = Counter({a >> 1: count[a] + count[a ^ 1] for a in count})

         x >>= 1

      return res // 2

   return test(nums, r + 1) - test(nums, l)

nums = [4,1,7,2]

l = 2

r = 6

print(solve(nums, l, r))

输入

[4,1,7,2], 2, 6
输出结果
6

以上是 在 Python 中使用 XOR 计算某个范围内的对的程序 的全部内容, 来源链接: utcz.com/z/355709.html

回到顶部