Given a number N, the task is to find the count of X such that N XOR X == N OR X, where 0<=X<=N
Examples:
Input: N = 5
Output: 2
For N = 5,
5 XOR 2 == 5 OR 2
5 XOR 0 == 5 OR 0
Thus, count is 2.
Input: N = 7
Output: 1
For N = 7,
7 XOR 0 == 7 OR 0
Thus, count is 1.
Approach: The idea is to convert a given number to binary and then count the unset bits in it. 2^count gives us the number of X such that N XOR X == N OR X.
Below is the implementation of the above approach:
C++
// C++ program to find // the XOR equals OR count #include<iostream> #include<math.h> using namespace std; class gfg { // Function to calculate count // of numbers with XOR equals OR public : int xorEqualsOrCount( int N) { // variable to store count of unset bits int count = 0; int bit; while (N > 0) { bit = N % 2; if (bit == 0) count++; N = N / 2; } return ( int ) pow (2, count); } }; // Driver code int main() { gfg g ; int N = 7; cout<<g.xorEqualsOrCount(N); return 0; } // This code is contributed by Soumik |
Java
// Java program to find the XOR equals OR count import java.io.*; import java.util.*; class GFG { // Function to calculate count of numbers with XOR equals OR static int xorEqualsOrCount( int N) { // variable to store count of unset bits int count = 0 ; int bit; while (N > 0 ) { bit = N % 2 ; if (bit == 0 ) count++; N = N / 2 ; } return ( int )Math.pow( 2 , count); } // Driver code public static void main(String args[]) { int N = 7 ; System.out.println(xorEqualsOrCount(N)); } } |
Python3
# Python3 program to find # the XOR equals OR count # Function to calculate count # of numbers with XOR equals OR def xorEqualsOrCount(N) : # variable to store # count of unset bits count = 0 while (N > 0 ) : bit = N % 2 if bit = = 0 : count + = 1 N / / = 2 return int ( pow ( 2 , count)) # Driver code if __name__ = = "__main__" : N = 7 print (xorEqualsOrCount(N)) # This code is contributed by # ANKITRAI1 |
C#
// C# program to find // the XOR equals OR count using System; class GFG { // Function to calculate count // of numbers with XOR equals OR static int xorEqualsOrCount( int N) { // variable to store count of unset bits int count = 0; int bit; while (N > 0) { bit = N % 2; if (bit == 0) count++; N = N / 2; } return ( int )Math.Pow(2, count); } // Driver code public static void Main() { int N = 7; Console.WriteLine(xorEqualsOrCount(N)); } } // This code is contributed by inder_verma.. |
PHP
<?php // PHP program to find the XOR // equals OR count // Function to calculate count // of numbers with XOR equals OR function xorEqualsOrCount( $N ) { // variable to store count // of unset bits $count = 0; while ( $N > 0) { $bit = $N % 2; if ( $bit == 0) $count ++; $N = intval ( $N / 2); } return pow(2, $count ); } // Driver code $N = 7; echo xorEqualsOrCount( $N ); // This code is contributed // by ChitraNayal ?> |
Javascript
<script> // Javascript program to find // the XOR equals OR count // Function to calculate count // of numbers with XOR equals OR function xorEqualsOrCount(N) { // variable to store count of unset bits let count = 0; let bit; while (N > 0) { bit = N % 2; if (bit == 0) count++; N = parseInt(N / 2); } return Math.pow(2, count); } // Driver code let N = 7; document.write(xorEqualsOrCount(N)); </script> |
1
Time Complexity: O(log N)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!