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

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++
Java
C#
Python3
PHP
Javascript
// 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 Codeint 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 = 5R = 15 print(isEvenOrOdd(L, R));
<?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 Oddfunction 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?>
<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>
Even
 
Time Complexity : O(1), since there is no loop or recursion.Auxiliary Space : O(1), since no extra space has been taken. 
ankthon
muskan_garg
surbhityagi15
vansikasharma1329
Bitwise-XOR
Competitive Programming
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.