Comparando X^Y e Y^X para valores muy grandes de X e Y

Dados dos enteros X e Y , la tarea es comparar X Y e Y X para valores grandes de X e Y .
Ejemplos: 
 

Entrada: X = 2, Y = 3 
Salida: 2^3 < 3^2 
2 3 < 3 2
Entrada: X = 4, Y = 5 
Salida: 4^5 > 5^4 
 

Enfoque ingenuo: un enfoque básico es encontrar los valores X Y e Y X y compararlos, lo que puede desbordarse ya que los valores de X e Y pueden ser grandes
Mejor enfoque: tomando el registro de ambas ecuaciones, log (X Y ) = Y * log(X) y log(Y X ) = X * log(Y) . Ahora, estos valores se pueden comparar fácilmente sin desbordamientos.
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to compare x^y and y^x
void compareVal(int x, int y)
{
 
    // Storing values OF x^y AND y^x
    long double a = y * log(x);
    long double b = x * log(y);
 
    // Comparing values
    if (a > b)
        cout << x << "^" << y << " > "
             << y << "^" << x;
 
    else if (a < b)
        cout << x << "^" << y << " < "
             << y << "^" << x;
 
    else if (a == b)
        cout << x << "^" << y << " = "
             << y << "^" << x;
}
 
// Driver code
int main()
{
    long double x = 4, y = 5;
 
    compareVal(x, y);
 
    return 0;
}

Java

// Java implementation of the approach
import java.util.*;
 
class GFG
{
     
// Function to compare x^y and y^x
static void compareVal(int x, int y)
{
 
    // Storing values OF x^y AND y^x
    double a = y * Math.log(x);
    double b = x * Math.log(y);
 
    // Comparing values
    if (a > b)
        System.out.print(x + "^" + y + " > " +
                         y + "^" + x);
 
    else if (a < b)
        System.out.print(x + "^" + y + " < " +
                         y + "^" + x);
 
    else if (a == b)
        System.out.print(x + "^" + y + " = " +
                         y + "^" + x );
}
 
// Driver code
public static void main(String[] args)
{
    int x = 4, y = 5;
 
    compareVal(x, y);
}
}
 
// This code is contributed by 29AjayKumar

Python3

# Python3 implementation of the approach
from math import log
 
# Function to compare x^y and y^x
def compareVal(x, y) :
     
    # Storing values OF x^y AND y^x
    a = y * log(x);
    b = x * log(y);
     
    # Comparing values
    if (a > b) :
        print(x, "^", y, ">", y, "^", x);
         
    elif (a < b) :
        print(x, "^", y, "<", y ,"^", x);
 
    elif (a == b) :
        print(x, "^", y, "=", y, "^", x);
 
# Driver code
if __name__ == "__main__" :
 
    x = 4; y = 5;
 
    compareVal(x, y);
 
# This code is contributed by AnkitRai01

C#

// C# implementation of the approach
using System;
class GFG
{
     
// Function to compare x^y and y^x
static void compareVal(double x, double y)
{
 
    // Storing values OF x^y AND y^x
    double a = y * Math.Log(x);
    double b = x * Math.Log(y);
 
    // Comparing values
    if (a > b)
        Console.Write (x + "^" + y + " > " +
                       y + "^" + x);
 
    else if (a < b)
            Console.Write (x + "^" + y + " < "+
                           y + "^" + x);
 
    else if (a == b)
        Console.Write (x + "^" + y + " = " +
                       y + "^" + x );
}
 
// Driver code
static public void Main ()
{
    double x = 4, y = 5;
 
    compareVal(x, y);
}
}
 
// This Code is contributed by ajit.

Javascript

<script>
// Javascript implementation of the approach
 
// Function to compare x^y and y^x
function compareVal(x, y)
{
 
    // Storing values OF x^y AND y^x
    let a = y * Math.log(x);
    let b = x * Math.log(y);
 
    // Comparing values
    if (a > b)
        document.write(x + "^" + y + " > "
             + y + "^" + x);
 
    else if (a < b)
        document.write(x + "^" + y + " < "
             + y + "^" + x);
 
    else if (a == b)
        document.write(x + "^" + y + " = "
             + y + "^" + x);
}
 
// Driver code
    let x = 4, y = 5;
 
    compareVal(x, y);
 
</script>
Producción: 

4^5 > 5^4

 

Complejidad de tiempo: O(1)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por manoje1729 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 *