Skip to content
Related Articles

Related Articles

Improve Article

Find XOR of numbers from the range [L, R]

  • Difficulty Level : Basic
  • Last Updated : 16 Mar, 2021

Given two integers L and R, the task is to find the XOR of elements of the range [L, R]
Examples :‘ 
 

Input: L = 4, R = 8 
Output:
4 ^ 5 ^ 6 ^ 7 ^ 8 = 8
Input: L = 3, R = 7 
Output:
 

 

Naive Approach: Intilialize answer as zero, Traverse all numbers from L to R and perform XOR of the numbers one by one with the answer. This would take O(N) time.
Efficient Approach: By following the approach discussed here, we can find the XOR of elements from the range [1, N] in O(1) time. 
Using this approach, we have to find xor of elements from the range [1, L – 1] and from the range [1, R] and then xor the respective answers again to get the xor of the elements from the range [L, R]. This is because every element from the range [1, L – 1] will get XORed twice in the result resulting in a 0 which when XORed with the elements of the range [L, R] will give the result.
Below is the implementation of the above approach: 
 

C++




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the XOR of elements
// from the range [1, n]
int findXOR(int n)
{
    int mod = n % 4;
 
    // If n is a multiple of 4
    if (mod == 0)
        return n;
 
    // If n % 4 gives remainder 1
    else if (mod == 1)
        return 1;
 
    // If n % 4 gives remainder 2
    else if (mod == 2)
        return n + 1;
 
    // If n % 4 gives remainder 3
    else if (mod == 3)
        return 0;
}
 
// Function to return the XOR of elements
// from the range [l, r]
int findXOR(int l, int r)
{
    return (findXOR(l - 1) ^ findXOR(r));
}
 
// Driver code
int main()
{
    int l = 4, r = 8;
 
    cout << findXOR(l, r);
 
    return 0;
}

Java




// Java implementation of the approach
class GFG
{
    // Function to return the XOR of elements
    // from the range [1, n]
    static int findXOR(int n)
    {
        int mod = n % 4;
 
        // If n is a multiple of 4
        if (mod == 0)
            return n;
 
        // If n % 4 gives remainder 1
        else if (mod == 1)
            return 1;
 
        // If n % 4 gives remainder 2
        else if (mod == 2)
            return n + 1;
 
        // If n % 4 gives remainder 3
        else if (mod == 3)
            return 0;
        return 0;
    }
 
    // Function to return the XOR of elements
    // from the range [l, r]
    static int findXOR(int l, int r)
    {
        return (findXOR(l - 1) ^ findXOR(r));
    }
 
    // Driver code
    public static void main(String[] args)
    {
 
        int l = 4, r = 8;
 
            System.out.println(findXOR(l, r));
    }
}
 
// This code contributed by Rajput-Ji

Python3




# Python3 implementation of the approach
from operator import xor
 
# Function to return the XOR of elements
# from the range [1, n]
def findXOR(n):
    mod = n % 4;
 
    # If n is a multiple of 4
    if (mod == 0):
        return n;
 
    # If n % 4 gives remainder 1
    elif (mod == 1):
        return 1;
 
    # If n % 4 gives remainder 2
    elif (mod == 2):
        return n + 1;
 
    # If n % 4 gives remainder 3
    elif (mod == 3):
        return 0;
 
# Function to return the XOR of elements
# from the range [l, r]
def findXORFun(l, r):
    return (xor(findXOR(l - 1) , findXOR(r)));
 
# Driver code
l = 4; r = 8;
 
print(findXORFun(l, r));
 
# This code is contributed by PrinciRaj1992

C#




// C# implementation of the approach
using System;
 
class GFG
{
    // Function to return the XOR of elements
    // from the range [1, n]
    static int findXOR(int n)
    {
        int mod = n % 4;
 
        // If n is a multiple of 4
        if (mod == 0)
            return n;
 
        // If n % 4 gives remainder 1
        else if (mod == 1)
            return 1;
 
        // If n % 4 gives remainder 2
        else if (mod == 2)
            return n + 1;
 
        // If n % 4 gives remainder 3
        else if (mod == 3)
            return 0;
        return 0;
    }
 
    // Function to return the XOR of elements
    // from the range [l, r]
    static int findXOR(int l, int r)
    {
        return (findXOR(l - 1) ^ findXOR(r));
    }
 
    // Driver code
    public static void Main()
    {
 
        int l = 4, r = 8;
 
            Console.WriteLine(findXOR(l, r));
    }
}
 
// This code is contributed by AnkitRai01

Javascript




<script>
 
    // Javascript implementation of the approach
     
    // Function to return the XOR of elements
    // from the range [1, n]
    function findxOR(n)
    {
        let mod = n % 4;
       
        // If n is a multiple of 4
        if (mod == 0)
            return n;
       
        // If n % 4 gives remainder 1
        else if (mod == 1)
            return 1;
       
        // If n % 4 gives remainder 2
        else if (mod == 2)
            return n + 1;
       
        // If n % 4 gives remainder 3
        else if (mod == 3)
            return 0;
    }
       
    // Function to return the XOR of elements
    // from the range [l, r]
    function findXOR(l, r)
    {
        return (findxOR(l - 1) ^ findxOR(r));
    }
     
    let l = 4, r = 8;
    document.write(findXOR(l, r));
 
</script>
Output: 
8

 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :