# Maximum value of B less than A such that A ^ B = A + B

Given an integer **A**, the task is to find the maximum value possible(**B**) which is less than A, such that xor of these two numbers A and B is equal their sum, that is **A ^ B = A + B**.

**Examples:**

Input:A = 4

Output:3

Explanation:

There are many such integers such that A ^ B = A + B

Some of this integers are –

4 ^ 3 = 4 + 3 = 7

4 ^ 2 = 4 + 2 = 6

4 ^ 1 = 4 + 1 = 5

4 ^ 0 = 4 + 0 = 4

Maximum of these values is 3

Input:7

Output:0

There is no integer except 0 such that A + B = A ^ B

**Approach:** The idea is to use the fact that and to get the value of , the value of (A & B) must be equal to 0.

=> A & B = 0 => B = ~A

**For Example:**

A = 4 (1 0 0)B = ~ A = (0 1 1) = 3

Below is the implementation of the above approach:

## Java

`// Java implementation to find ` `// maximum value of B such that ` `// A ^ B = A + B ` ` ` `// Function to find the maximum ` `// value of B such that A^B = A+B ` `class` `GFG ` `{ ` ` ` `static` `void` `maxValue(` `int` `a) ` `{ ` ` ` ` ` `// Binary Representation of A ` ` ` `String c = Integer.toBinaryString(a); ` ` ` ` ` `String b = ` `""` `; ` ` ` ` ` `// Loop to find the negation ` ` ` `// of the integer A ` ` ` `for` `(` `int` `i = ` `0` `; i < c.length(); i++) ` ` ` `{ ` ` ` `if` `((c.charAt(i)-` `'0'` `)==` `1` `) ` ` ` `b +=` `'0'` `; ` ` ` `else` ` ` `b+=` `'1'` `; ` ` ` `} ` ` ` ` ` `// output ` ` ` `System.out.print(Integer.parseInt(b, ` `2` `)); ` ` ` `} ` ` ` `// Driver Code ` `public` `static` `void` `main(String []args) ` `{ ` ` ` `int` `a = ` `4` `; ` ` ` ` ` `// Function Call ` ` ` `maxValue(a); ` `} ` `} ` ` ` `// This code is contributed by chitranayal ` |

*chevron_right*

*filter_none*

## Python

`# Python implementation to find ` `# maximum value of B such that ` `# A ^ B = A + B ` ` ` `# Function to find the maximum ` `# value of B such that A^B = A+B ` `def` `maxValue(a): ` ` ` ` ` `# Binary Representation of A ` ` ` `a ` `=` `bin` `(a)[` `2` `:] ` ` ` ` ` `b ` `=` `'' ` ` ` ` ` `# Loop to find the negation ` ` ` `# of the integer A ` ` ` `for` `i ` `in` `list` `(a): ` ` ` `b ` `+` `=` `str` `(` `int` `(` `not` `int` `(i))) ` ` ` ` ` `# output ` ` ` `print` `(` `int` `(b, ` `2` `)) ` ` ` `return` `int` `(b, ` `2` `) ` ` ` `# Driver Code ` `if` `__name__ ` `=` `=` `'__main__'` `: ` ` ` `a ` `=` `4` ` ` ` ` `# Function Call ` ` ` `maxValue(a) ` |

*chevron_right*

*filter_none*

## C#

`// C# implementation to find ` `// maximum value of B such that ` `// A ^ B = A + B ` ` ` `// Function to find the maximum ` `// value of B such that A^B = A+B ` `using` `System; ` `using` `System.Collections.Generic; ` ` ` `class` `GFG ` `{ ` ` ` `static` `void` `maxValue(` `int` `a) ` `{ ` ` ` ` ` `// Binary Representation of A ` ` ` `String c = Convert.ToString(a, 2); ` ` ` ` ` `String b = ` `""` `; ` ` ` ` ` `// Loop to find the negation ` ` ` `// of the integer A ` ` ` `for` `(` `int` `i = 0; i < c.Length; i++) ` ` ` `{ ` ` ` `if` `((c[i] - ` `'0'` `) == 1) ` ` ` `b += ` `'0'` `; ` ` ` `else` ` ` `b += ` `'1'` `; ` ` ` `} ` ` ` ` ` `// output ` ` ` `Console.Write(Convert.ToInt32(b, 2)); ` ` ` `} ` ` ` `// Driver Code ` `public` `static` `void` `Main(String []args) ` `{ ` ` ` `int` `a = 4; ` ` ` ` ` `// Function Call ` ` ` `maxValue(a); ` `} ` `} ` ` ` `// This code is contributed by 29AjayKumar ` |

*chevron_right*

*filter_none*

**Output:**

3

**Performance Analysis:**

**Time Complexity:**In the above-given approach, there is conversion from decimal to binary which takes O(logN) time in worst case. Therefore, the time complexity for this approach will be**O(logN)**.**Auxillary Space Complexity:**In the above-given approach, there is no extra space used. Therefore, the auxillary space complexity for the above approach will be**O(1)**

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: **DSA Self Paced**. Become industry ready at a student-friendly price.

## Recommended Posts:

- Maximum XOR value of maximum and second maximum element among all possible subarrays
- Maximum length Subsequence with alternating sign and maximum Sum
- Maximum element in an array such that its previous and next element product is maximum
- Maximum value of |arr[i] - arr[j]| + |i - j|
- Find maximum among x^(y^2) or y^(x^2) where x and y are given
- Value in a given range with maximum XOR
- Maximum XOR value in matrix
- Maximum value of |arr[0] - arr[1]| + |arr[1] - arr[2]| + ... +|arr[n - 2] - arr[n - 1]| when elements are from 1 to n
- Maximum XOR-value of at-most k-elements from 1 to n
- Find maximum value of x such that n! % (k^x) = 0
- Maximum XOR using K numbers from 1 to n
- Maximum value with the choice of either dividing or considering as it is
- Maximum GCD of all subarrays of length at least 2
- Maximum Sum of Products of Two Arrays
- Maximum possible elements which are divisible by 2
- Maximum OR value of a pair in an Array | Set 2
- Subsequence of size k with maximum possible GCD
- Number of subsets whose mean is maximum
- Remove one element to get maximum XOR
- Longest sub-array with maximum GCD

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.