Valor máximo de B menor que A tal que A ^ B = A + B

Dado un entero A , la tarea es encontrar el valor máximo posible ( B ) que sea menor que A, tal que x o de estos dos números A y B sean iguales a su suma, es decir A ^ B = A + B .

Ejemplos:  

Entrada: A = 4 
Salida:
Explicación: 
Hay muchos enteros de este tipo, tales que A ^ B = A + B 
Algunos de estos enteros son – 
4 ^ 3 = 4 + 3 = 7 
4 ^ 2 = 4 + 2 = 6 
4 ^ 1 = 4 + 1 = 5 
4 ^ 0 = 4 + 0 = 4 
El máximo de estos valores es 3

Entrada:
Salida:
No hay ningún entero excepto 0 tal que A + B = A ^ B 

Enfoque: La idea es utilizar el hecho de que 

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

Por ejemplo:  

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

 A continuación se muestra la implementación del enfoque anterior:

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>
Producción: 

3

 

Análisis de rendimiento: 

  • Complejidad del tiempo: en el enfoque anterior, existe la conversión de decimal a binario que toma el tiempo O (logN) en el peor de los casos. Por lo tanto, la complejidad de tiempo para este enfoque será O(logN) .
  • Complejidad del espacio auxiliar: en el enfoque anterior, no se utiliza espacio adicional. Por lo tanto, la complejidad del espacio auxiliar para el enfoque anterior será O(1)

Publicación traducida automáticamente

Artículo escrito por ghoshashis545 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *