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

• Difficulty Level : Easy
• Last Updated : 23 Jun, 2022

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

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

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

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

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

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

## PHP

 ``

## Javascript

 ``

Output:

`Even`

Time Complexity : O(1), since there is no loop or recursion.
Auxiliary Space : O(1), since no extra space has been taken.

My Personal Notes arrow_drop_up