Given a range [ L, R ], the task is to find if the value of XOR of all natural numbers in the 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.
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) { int xorr = 0; for ( int i = L; i <= R; i++) { xorr ^= i; } return ((xorr % 2 == 0) ? "Even" : "Odd" ); } // Driver Code int main() { int L = 5, R = 15; cout << isEvenOrOdd(L, R); return 0; } |
Java
import java.io.*; class Gfg { public static String isEvenOrOdd( int L, int R) { int xorr = 0 ; for ( int i = L; i <= R; i++) { xorr ^= i; } return ((xorr % 2 == 0 ) ? "Even" : "Odd" ); } public static void main(String[] args) { int L = 5 , R = 15 ; System.out.println(isEvenOrOdd(L, R)); } } |
Python3
# Python 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): xorr = 0 ; for i in range (L, R + 1 ): xorr ^ = i; if (xorr % 2 = = 0 ): return "Even" ; else : return "Odd" ; # Driver Code L = 5 ; R = 15 ; print (isEvenOrOdd(L, R)); # This code is contributed by poojaagrawal2. |
C#
using System; class Gfg { public static string isEvenOrOdd( int L, int R) { int xorr = 0; for ( int i = L; i <= R; i++) { xorr ^= i; } return ((xorr % 2 == 0) ? "Even" : "Odd" ); } public static void Main( string [] args) { int L = 5, R = 15; Console.WriteLine(isEvenOrOdd(L, R)); } } // This code is contributed by divya_p123. |
Javascript
// 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) { let xorr = 0; for (let i = L; i <= R; i++) { xorr ^= i; } return ((xorr % 2 == 0) ? "Even" : "Odd" ); } // Driver Code let L = 5, R = 15; console.log(isEvenOrOdd(L, R)); // This code is contributed by agrawalpoojaa976. |
Even
Time Complexity: O(R – L)
Auxiliary Space: O(1)
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> |
Even
Time Complexity : O(1), since there is no loop or recursion.
Auxiliary Space : O(1), since no extra space has been taken.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!