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: 3
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 3Input: 7
Output: 0
There is no integer except 0 such that A + B = A ^ B
Approach: The idea is to use the fact that
=> 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++ 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 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 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# 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 |
<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)