# Number of values of b such that a = b + (a^b)

• Last Updated : 20 Aug, 2022

Given an integer . Find the number of solutions of which satisfies the equation:

a = b + (a^b)

Examples:

```Input: a = 4
Output: 2
The only values of b are 0 and 4 itself.

Input: a = 3
Output: 4 ```

A naive solution is to iterate from 0 to and count the number of values that satisfies the given equation. We need to traverse only till since any value greater than will give the XOR value > , hence cannot satisfy the equation.

Below is the implementation of the above approach:

## C++

 `// C++ program to find the number of values``// of b such that a = b + (a^b)``#include ``using` `namespace` `std;` `// function to return the number of solutions``int` `countSolutions(``int` `a)``{``    ``int` `count = 0;` `    ``// check for every possible value``    ``for` `(``int` `i = 0; i <= a; i++) {``        ``if` `(a == (i + (a ^ i)))``            ``count++;``    ``}` `    ``return` `count;``}` `// Driver Code``int` `main()``{``    ``int` `a = 3;``    ``cout << countSolutions(a);``}`

## Java

 `// Java program to find the number of values``// of b such that a = b + (a^b)` `import` `java.io.*;` `class` `GFG {`  `// function to return the number of solutions`` ``static` `int` `countSolutions(``int` `a)``{``    ``int` `count = ``0``;` `    ``// check for every possible value``    ``for` `(``int` `i = ``0``; i <= a; i++) {``        ``if` `(a == (i + (a ^ i)))``            ``count++;``    ``}` `    ``return` `count;``}` `// Driver Code`  `    ``public` `static` `void` `main (String[] args) {``        ``int` `a = ``3``;``    ``System.out.println( countSolutions(a));``    ``}``}``// This code is contributed by inder_verma`

## Python3

 `# Python 3 program to find``# the number of values of b``# such that a = b + (a^b)` `# function to return the``# number of solutions``def` `countSolutions(a):` `    ``count ``=` `0` `    ``# check for every possible value``    ``for` `i ``in` `range``(a ``+` `1``):``        ``if` `(a ``=``=` `(i ``+` `(a ^ i))):``            ``count ``+``=` `1` `    ``return` `count` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:``    ``a ``=` `3``    ``print``(countSolutions(a))` `# This code is contributed``# by ChitraNayal`

## C#

 `// C# program to find the number of``// values of b such that a = b + (a^b)``using` `System;` `class` `GFG``{` `// function to return the``// number of solutions``static` `int` `countSolutions(``int` `a)``{``    ``int` `count = 0;` `    ``// check for every possible value``    ``for` `(``int` `i = 0; i <= a; i++)``    ``{``        ``if` `(a == (i + (a ^ i)))``            ``count++;``    ``}` `    ``return` `count;``}` `// Driver Code``public` `static` `void` `Main ()``{``    ``int` `a = 3;``    ``Console.WriteLine(countSolutions(a));``}``}` `// This code is contributed by inder_verma`

## PHP

 ``

## Javascript

 ``

Output:

`4`

Time Complexity: O(a), since there runs a loop for a times.
Auxiliary Space: O(1), since no extra space has been taken.

An Efficient Approach is to observe a pattern of answers when we write the possible solutions for different values of . Only the set bits are used to determine the number of possible answers. The answer to the problem will always be 2^(number of set bits) which can be determined by observation.

Below is the implementation of the above approach:

## C++

 `// C++ program to find the number of values``// of b such that a = b + (a^b)``#include ``using` `namespace` `std;` `// function to return the number of solutions``int` `countSolutions(``int` `a)``{``    ``int` `count = __builtin_popcount(a);` `    ``count = ``pow``(2, count);``    ``return` `count;``}` `// Driver Code``int` `main()``{``    ``int` `a = 3;``    ``cout << countSolutions(a);``}`

## Java

 `// Java program to find the number of values``// of b such that a = b + (a^b)``import` `java.io.*;``class` `GFG``{`` ` `    ``// function to return the number of solutions``    ``static` `int` `countSolutions(``int` `a)``    ``{``        ``int` `count = Integer.bitCount(a);``     ` `        ``count =(``int``) Math.pow(``2``, count);``        ``return` `count;``    ``}``     ` `    ``// Driver Code``        ``public` `static` `void` `main (String[] args)``    ``{``        ``int` `a = ``3``;``        ``System.out.println(countSolutions(a));``    ``}``}``// This code is contributed by Raj`

## Python3

 `# Python3 program to find the number``# of values of b such that a = b + (a^b)` `# function to return the number``# of solutions``def` `countSolutions(a):` `    ``count ``=` `bin``(a).count(``'1'``)``    ``return` `2` `*``*` `count` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:` `    ``a ``=` `3``    ``print``(countSolutions(a))` `# This code is contributed by``# Rituraj Jain`

## C#

 `// C# program to find the number of``// values of b such that a = b + (a^b)``class` `GFG``{` `// function to return the number``// of solutions``static` `int` `countSolutions(``int` `a)``{``    ``int` `count = bitCount(a);` `    ``count =(``int``) System.Math.Pow(2, count);``    ``return` `count;``}` `static` `int` `bitCount(``int` `n)``{``    ``int` `count = 0;``    ``while` `(n != 0)``    ``{``        ``count++;``        ``n &= (n - 1);``    ``}``    ``return` `count;``}` `// Driver Code``public` `static` `void` `Main()``{``    ``int` `a = 3;``    ``System.Console.WriteLine(countSolutions(a));``}``}` `// This code is contributed by mits`

## PHP

 ``

## Javascript

 ``

Output:

`4`

Time Complexity: O(log N) since inbuilt pow function has been used which takes logarithmic time.
Auxiliary Space: O(1), since no extra space has been taken.

My Personal Notes arrow_drop_up