Related Articles

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

• Difficulty Level : Medium
• Last Updated : 28 Apr, 2021

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``#include``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<

## 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

 ` 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

 ``
Output:
`1`

My Personal Notes arrow_drop_up