Open In App

Count numbers whose XOR with N is equal to OR with N

Improve
Improve
Like Article
Like
Save
Share
Report

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)



Last Updated : 21 Aug, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads