Related Articles

# 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 ``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

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