- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Program to count pairs with XOR in a range in Python

Suppose we have an array nums and have two values l and r, we have to find the number of nice pairs. Here a nice pair is a pair (i, j) where 0 <= i < j < size of nums and l <= (nums[i] XOR nums[j]) <= r.

So, if the input is like nums = [4,1,7,2] l = 2 r = 6, then the output will be 6 because the nice pairs are (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 XOR 2 = 5.

To solve this, we will follow these steps −

Define a function test() . This will take nums, x

count := a map containing frequency of elements in nums

res := 0

while x is non-zero, do

if x is odd, then

res := res + sum of all elements of (count[a] * count[(x - 1) XOR a) for all a in count

count := map with key a/2 and value (count[a] + count[a XOR 1] for all a in count

x = quotient of x/2

return quotient of res / 2

From the main method return test(nums, r + 1) - test(nums, l)

## Example

Let us see the following implementation to get better understanding

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))

## Input

[4,1,7,2], 2, 6

## Output

6

- Related Questions & Answers
- Count pairs with Odd XOR in C++
- Count all pairs with given XOR in C++
- Count pairs with Bitwise XOR as EVEN number in C++
- Count pairs with Bitwise XOR as ODD number in C++
- Python program to count unset bits in a range.
- Python program to count Bidirectional Tuple Pairs
- Program to find XOR sum of all pairs bitwise AND in Python
- Program to count nice pairs in an array in Python
- Python program to count pairs for consecutive elements
- Python program to count the pairs of reverse strings
- Counting pairs with range sum in a limit in JavaScript
- Python Count set bits in a range?
- Program to count odd numbers in an interval range using Python
- Count pairs with given sum in C++
- Count all pairs of adjacent nodes whose XOR is an odd number in C++