Maximice lo grande cuando se pueden intercambiar tanto grandes como pequeños

Dada N Caramelos Grandes y M Caramelos Pequeños. Se puede comprar un Big Candy pagando X dulces pequeños. Alternativamente, un caramelo grande se puede vender por Y caramelos pequeños. La tarea es encontrar el número máximo de dulces grandes que se pueden comprar.
Ejemplos: 
 

Entrada: N = 3, M = 10, X = 4, Y = 2 
Salida:
8 dulces pequeños se intercambian por 2 dulces grandes.
Entrada: N = 3, M = 10, X = 1, Y = 2 
Salida: 16 
Vende todos los dulces grandes iniciales para obtener 6 dulces pequeños. 
Ahora 16 caramelos pequeños se pueden cambiar por 16 caramelos grandes. 
 

En el primer ejemplo, los caramelos grandes no se pueden vender con fines de lucro. Por lo tanto, solo los dulces pequeños restantes se pueden cambiar por dulces grandes. 
En el segundo ejemplo, los caramelos grandes se pueden vender con fines de lucro.
Enfoque: si los dulces grandes iniciales se pueden vender con fines de lucro, es decir , X < Y , entonces venda los dulces grandes y actualice el recuento de dulces grandes y pequeños. Luego, vende todos los dulces pequeños actualizados para comprar dulces grandes.
A continuación se muestra la implementación del enfoque anterior:
 

C++

// C++ implementation of the approach
#include <iostream>
using namespace std;
 
    // Function to return the maximum big
    // candies that can be bought
    int max_candies(int bigCandies,
        int smallCandies,int X, int Y)
    {
        // If initial big candies
        // can be sold for profit
        if (X < Y)
        {
            smallCandies += Y * bigCandies;
            bigCandies = 0;
        }
 
        // Update big candies that can be bought
        bigCandies += (smallCandies / X);
 
        return bigCandies;
    }
 
    // Driver code
    int main()
    {
        int N = 3, M = 10;
        int X = 4, Y = 2;
        cout << (max_candies(N, M, X, Y));
        return 0;
    }

Java

// Java implementation of the approach
class GFG {
 
    // Function to return the maximum big candies
    // that can be bought
    static int max_candies(int bigCandies, int smallCandies,
                           int X, int Y)
    {
        // If initial big candies can be sold for profit
        if (X < Y) {
 
            smallCandies += Y * bigCandies;
            bigCandies = 0;
        }
 
        // Update big candies that can be bought
        bigCandies += (smallCandies / X);
 
        return bigCandies;
    }
 
    // Driver code
    public static void main(String[] args)
    {
        int N = 3, M = 10;
        int X = 4, Y = 2;
 
        System.out.println(max_candies(N, M, X, Y));
    }
}

Python3

# Python3 implementation of the approach
 
# Function to return the maximum big candies
# that can be bought
def max_candies(bigCandies, smallCandies, X, Y):
     
    # If initial big candies can
    # be sold for profit
    if(X < Y):
     
        smallCandies += Y * bigCandies
        bigCandies = 0
     
    # Update big candies that can be bought
    bigCandies += (smallCandies // X)
 
    return bigCandies
 
# Driver code
N = 3
M = 10
X = 4
Y = 2
print(max_candies(N, M, X, Y))
 
# This code is contributed by Code_Mech

C#

// C# implementation of the approach
using System;
 
class GFG
{
     
    // Function to return the maximum
    // big candies that can be bought
    static int max_candies(int bigCandies,
                        int smallCandies,
                        int X, int Y)
    {
        // If initial big candies
        // can be sold for profit
        if (X < Y)
        {
            smallCandies += Y * bigCandies;
            bigCandies = 0;
        }
 
        // Update big candies that can be bought
        bigCandies += (smallCandies / X);
 
        return bigCandies;
    }
 
    // Driver code
    static public void Main ()
    {
        int N = 3, M = 10;
        int X = 4, Y = 2;
        Console.WriteLine(max_candies(N, M, X, Y));
    }
}
 
// This Code is contributed by ajit...

PHP

<?php
// PHP implementation of the approach
 
// Function to return the maximum big
// candies that can be bought
function max_candies($bigCandies,
                     $smallCandies, $X, $Y)
{
    // If initial big candies can be
    // sold for profit
    if ($X < $Y)
    {
 
        $smallCandies += $Y * $bigCandies;
        $bigCandies = 0;
    }
 
    // Update big candies that can be bought
    $bigCandies += (int)($smallCandies / $X);
 
    return $bigCandies;
}
 
// Driver code
$N = 3;
$M = 10;
$X = 4;
$Y = 2;
 
echo (max_candies($N, $M, $X, $Y));
 
// This code is contributed by akt_mit
?>

Javascript

<script>
    // Javascript implementation of the approach
     
    // Function to return the maximum
    // big candies that can be bought
    function max_candies(bigCandies, smallCandies, X, Y)
    {
        // If initial big candies
        // can be sold for profit
        if (X < Y)
        {
            smallCandies += Y * bigCandies;
            bigCandies = 0;
        }
   
        // Update big candies that can be bought
        bigCandies += parseInt(smallCandies / X, 10);
   
        return bigCandies;
    }
     
    let N = 3, M = 10;
    let X = 4, Y = 2;
    document.write(max_candies(N, M, X, Y));
 
</script>
Producción: 

5

 

Publicación traducida automáticamente

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