Skip to content
Related Articles
Open in App
Not now

Related Articles

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

Improve Article
Save Article
  • Difficulty Level : Easy
  • Last Updated : 21 May, 2021
Improve Article
Save Article

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 are equal to their sum, that is A ^ B = A + B.

Examples:  

Input: A = 4 
Output:
Explanation: 
There are many such integers, such that A ^ B = A + B 
Some of these integers are – 
4 ^ 3 = 4 + 3 = 7 
4 ^ 2 = 4 + 2 = 6 
4 ^ 1 = 4 + 1 = 5 
4 ^ 0 = 4 + 0 = 4 
The maximum of these values is 3

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

Approach: The idea is to use the fact that 

A + B &= (A \wedge B) + 2*(A \& B) and to get the value of A + B = A \wedge B, 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:

C++




// C++ implementation to find
// maximum value of B such that
// A ^ B = A + B
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the maximum
// value of B such that A^B = A+B
void maxValue(int a)
{
     
    // Binary Representation of A
    string c = bitset<3>(a).to_string();
    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
    cout << bitset<3>(b).to_ulong();
}
 
// Driver code
int main()
{
    int a = 4;
     
    // Function Call
    maxValue(a);
     
    return 0;
}
 
// This code is contributed by divyeshrabadiya07

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

Python3




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

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

Javascript




<script>
 
// Javascript 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
function maxValue(a)
{
     
    // Binary Representation of A
    var c = a.toString(2);
    var b = "";
     
    // Loop to find the negation
    // of the integer A
    for(var i = 0; i < c.length; i++)
    {
        if ((c[i] - '0') == 1)
            b += '0';
        else
            b += '1';
    }
        
    // Output
    document.write(parseInt(b,2));
}
 
// Driver code
var a = 4;
 
// Function Call
maxValue(a);
</script>

Output: 

3

 

Performance Analysis: 

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

 


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!