Related Articles

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

• Difficulty Level : Easy
• Last Updated : 15 Mar, 2021

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)
Auxiliary Space : O(1)

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