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

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 = 8Output:8

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the

DSA Self Paced Courseat a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please referComplete Interview Preparation Course.In case you wish to attend

live classeswith experts, please referDSA Live Classes for Working ProfessionalsandCompetitive Programming Live for Students.

**Naive Approach:** Initialize 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