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

• Last Updated : 09 Jun, 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)
Auxiliary Space: O(1)

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)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up
Recommended Articles
Page :