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= 10Output:OddInput:L= 5, R=15Output: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 <bits/stdc++.h>` `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

`<?php` `// PHP 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` `function` `isEvenOrOdd(` `$L` `, ` `$R` `)` `{` ` ` `// Count odd Numbers in range [L, R]` ` ` `$oddCount` `= ` `floor` `((` `$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` `$L` `= 5;` `$R` `= 15;` `echo` `isEvenOrOdd(` `$L` `, ` `$R` `);` `// This code is contributed by Ryuga` `?>` |

## Javascript

`<script>` `// JavaScript 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` `function` `isEvenOrOdd(L, R)` `{` ` ` `// Count odd Numbers in range [L, R]` ` ` `let oddCount = Math.floor((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` ` ` `let L = 5, R = 15;` ` ` `document.write(isEvenOrOdd(L, R));` `// This code is contributed by Surbhi Tyagi.` `</script>` |

**Output:**

Even

Time Complexity : O(1)

Auxiliary Space : O(1)

Attention reader! Don’t stop learning now. Get hold of all the important Comcompetitivepetitve Programming concepts with the **Competitive Programming Live ** course.