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> |
Output:
1
Time Complexity: O(log N)
Auxiliary Space: O(1)