# Check whether XOR of all numbers in a given range is even or odd

Given a range [ L, R ], the task is to find if value of XOR of all natural numbers in range L to R ( both inclusive ) is even or odd. Print ‘Even’ if XOR of all numbers in the range is even, otherwise print odd.

Examples:

```Input: L = 1, R= 10
Output: Odd

Input: L= 5, R=15
Output: Even
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

A Simple Solution is to calculate XOR of all numbers in range [L, R] and then check if resultant XOR value is even or odd.
Time Complexity of this approach will be O(n).

An Efficient Solution is based on the below fact:

```odd ^ odd = even
odd ^ even = odd
even ^ odd = odd
even ^ even = even
```

XOR of all even numbers will be even ( irrespective of size of range ) and if count of odd numbers is odd then the final XOR will be odd and if even then final XOR will be even.

Now, it can be concluded that,

• If the count of Odd Numbers is even,
XOR of all odd numbers = Even
XOR of all even numbers = Even
Final XOR = Even ^ Even = Even
• If the count of Odd Numbers is Odd,
XOR of all odd numbers = Odd
XOR of all even numbers = Even
Final XOR = Odd ^ Even = Odd

So, all we have to do is to count odd numbers in range L to R.

Approach :

• Count the odd numbers in the range [ L, R ].
• Check if count of odd numbers is even or odd.
• Print ‘Even’ if count is even otherwise print ‘Odd’ .

Below is the implementation of above approach:

 `// C++ program to check if XOR of ` `// all numbers in range [L, R] ` `// is Even or odd ` ` `  `#include ` `using` `namespace` `std; ` ` `  `// Function to check if XOR of all numbers ` `// in range [L, R] is Even or Odd ` ` `  `string isEvenOrOdd(``int` `L, ``int` `R) ` `{ ` `    ``// Count odd Numbers in range [L, R] ` `    ``int` `oddCount = (R - L) / 2; ` ` `  `    ``if` `(R % 2 == 1 || L % 2 == 1) ` `        ``oddCount++; ` ` `  `    ``// Check if count of odd Numbers ` `    ``// is even or odd ` ` `  `    ``if` `(oddCount % 2 == 0) ` `        ``return` `"Even"``; ` `    ``else` `        ``return` `"Odd"``; ` `} ` ` `  `// Driver Code ` `int` `main() ` `{ ` ` `  `    ``int` `L = 5, R = 15; ` ` `  `    ``cout << isEvenOrOdd(L, R); ` ` `  `    ``return` `0; ` `} `

 `// Java program to check if XOR of ` `// all numbers in range [L, R] ` `// is Even or odd ` ` `  `class` `GFG { ` ` `  `    ``// Function to check if XOR of all numbers ` `    ``// in range [L, R] is Even or Odd ` ` `  `    ``static` `String isEvenOrOdd(``int` `L, ``int` `R) ` `    ``{ ` `        ``// Count odd Numbers in range [L, R] ` `        ``int` `oddCount = (R - L) / ``2``; ` ` `  `        ``if` `(R % ``2` `== ``1` `|| L % ``2` `== ``1``) ` `            ``oddCount++; ` ` `  `        ``// Check if count of odd Numbers ` `        ``// is even or odd ` ` `  `        ``if` `(oddCount % ``2` `== ``0``) ` `            ``return` `"Even"``; ` `        ``else` `            ``return` `"Odd"``; ` `    ``} ` ` `  `    ``// Driver Code ` `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` ` `  `        ``int` `L = ``5``, R = ``15``; ` ` `  `        ``System.out.println(isEvenOrOdd(L, R)); ` `    ``} ` `} `

 `// C# program to check if XOR of ` `// all numbers in range [L, R] ` `// is Even or odd ` ` `  `using` `System; ` `class` `GFG { ` ` `  `    ``// Function to check if XOR of all numbers ` `    ``// in range [L, R] is Even or Odd ` ` `  `    ``static` `string` `isEvenOrOdd(``int` `L, ``int` `R) ` `    ``{ ` `        ``// Count odd Numbers in range [L, R] ` `        ``int` `oddCount = (R - L) / 2; ` ` `  `        ``if` `(R % 2 == 1 || L % 2 == 1) ` `            ``oddCount++; ` ` `  `        ``// Check if count of odd Numbers ` `        ``// is even or odd ` ` `  `        ``if` `(oddCount % 2 == 0) ` `            ``return` `"Even"``; ` `        ``else` `            ``return` `"Odd"``; ` `    ``} ` ` `  `    ``// Driver Code ` `    ``public` `static` `void` `Main() ` `    ``{ ` ` `  `        ``int` `L = 5, R = 15; ` ` `  `        ``Console.WriteLine(isEvenOrOdd(L, R)); ` `    ``} ` `} `

 `# Python3 program to check if XOR of ` `# all numbers in range [L, R]  ` `# is Even or odd ` ` `  ` `  `# Function to check if XOR of all numbers ` `# in range [L, R] is Even or Odd ` ` `  `def` `isEvenOrOdd( L, R ): ` ` `  `    ``# Count odd Numbers in range [L, R] ` `    ``oddCount ``=` `(R ``-` `L )``/``2` `     `  `    ``if``( R ``%` `2` `=``=` `1` `or` `L ``%` `2` `=``=` `1``): ` `        ``oddCount ``=` `oddCount ``+` `1` `     `  `     `  `    ``# Check if count of odd Numbers ` `    ``# is even or odd ` `     `  `    ``if``(oddCount ``%` `2` `=``=` `0` `): ` `        ``return` `"Even"` `    ``else` `: ` `        ``return` `"Odd"` `         `  ` `  `     `  `# Driver Code ` ` `  `L ``=` `5` `R ``=` `15` ` `  `print``(isEvenOrOdd(L, R)); `

 ` `

Output:
```Even
```

Time Complexity : O(1)
Auxiliary Space : O(1)

self motivated and passionate programmer

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : AnkitRai01, muskan_garg

Article Tags :
Practice Tags :