Imprimir un par de números con la suma y el producto dados

Dada una suma S y un producto P , la tarea es imprimir cualquier par de enteros que tenga la suma S y el producto P . Si no existe tal par, imprima -1.
Ejemplos: 
 

Entrada : S = 5, P = 6 
Salida : 2, 3 
Explicación
Suma = 2 + 3 = 5, y 
Producto = 2 * 3 = 6 
Entrada : S = 5, P = 9 
Salida : -1 
Explicación
No existe tal par existe 
 

Enfoque: Sea el par (x, y) . Por tanto, según el problema, la suma dada ( S ) será (x + y) y el producto dado ( P ) será (x * y) 
 

If the pair is (x, y)

Given that product
    P = x * y
    y = P / x;  (eq.. 1)

Given that sum 
    S = x + y
    S = x + (P / x)  from (eq..1)
    x2 - Sx + P = 0

which is a quadratic equation in x.

Como esta es una ecuación cuadrática, solo necesitamos encontrar sus raíces , usando la siguiente ecuación. 
\LARGE x = \frac{-b\pm \sqrt{b^2-4ac}}{2a}
 

Here:
  a = 1
  b = -S
  c = P

Por lo tanto, la ecuación anterior se cambiará como: 
\LARGE x = \frac{S\pm \sqrt{S^2-4P}}{2}
A continuación se muestra la implementación del enfoque anterior: 
 

CPP

// CPP program to find any pair
// which has sum S and product P.
#include <bits/stdc++.h>
using namespace std;
 
// Prints roots of quadratic equation
// ax*2 + bx + c = 0
void findRoots(int b, int c)
{
 
    int a = 1;
    int d = b * b - 4 * a * c;
 
    // calculating the sq root value
    // for b * b - 4 * a * c
    double sqrt_val = sqrt(abs(d));
 
    if (d > 0) {
        double x = -b + sqrt_val;
        double y = -b - sqrt_val;
 
        // Finding the roots
        int root1 = (x) / (2 * a);
        int root2 = (y) / (2 * a);
 
        // Check if the roots
        // are valid or not
        if (root1 + root2 == -1 * b
            && root1 * root2 == c)
            cout << root1 << ", " << root2;
        else
            cout << -1;
    }
    else if (d == 0) {
 
        // Finding the roots
        int root = -b / (2 * a);
 
        // Check if the roots
        // are valid or not
        if (root + root == -1 * b
            && root * root == c)
            cout << root << ", " << root;
        else
            cout << -1;
    }
 
    // when d < 0
    else {
 
        // No such pair exists in this case
        cout << -1;
    }
 
    cout << endl;
}
 
// Driver code
int main()
{
    int S = 5, P = 6;
    findRoots(-S, P);
 
    S = 5, P = 9;
    findRoots(-S, P);
 
    return 0;
}

Java

// Java program to find any pair
// which has sum S and product P.
import java.util.*;
  
class GFG
{
 
// Prints roots of quadratic equation
// ax*2 + bx + c = 0
static void findRoots(int b, int c)
{
  
    int a = 1;
    int d = b * b - 4 * a * c;
  
    // calculating the sq root value
    // for b * b - 4 * a * c
    double sqrt_val = Math.sqrt(Math.abs(d));
  
    if (d > 0) {
        double x = -b + sqrt_val;
        double y = -b - sqrt_val;
  
        // Finding the roots
        int root1 = (int)(x) / (2 * a);
        int root2 = (int) (y) / (2 * a);
  
        // Check if the roots
        // are valid or not
        if (root1 + root2 == -1 * b
            && root1 * root2 == c)
            System.out.print( root1 + ", " + root2);
        else
            System.out.print( -1);
    }
    else if (d == 0) {
  
        // Finding the roots
        int root = -b / (2 * a);
  
        // Check if the roots
        // are valid or not
        if (root + root == -1 * b
            && root * root == c)
            System.out.print(root+ ", "+root);
        else
            System.out.print(-1);
    }
  
    // when d < 0
    else {
  
        // No such pair exists in this case
        System.out.print( -1);
    }
  
    System.out.println();
}
  
// Driver code
public static void main (String []args)
{
    int S = 5, P = 6;
    findRoots(-S, P);
  
    S = 5;
    P = 9;
    findRoots(-S, P);
}
}
 
// This code is contributed by chitranayal

Python3

# Python3 program to find any pair
# which has sum S and product P.
from math import sqrt
 
# Prints roots of quadratic equation
# ax*2 + bx + c = 0
def findRoots(b, c):
 
    a = 1
    d = b * b - 4 * a * c
 
    # calculating the sq root value
    # for b * b - 4 * a * c
    sqrt_val = sqrt(abs(d))
 
    if (d > 0):
        x = -b + sqrt_val
        y = -b - sqrt_val
 
        # Finding the roots
        root1 = (x) // (2 * a)
        root2 = (y) // (2 * a)
 
        # Check if the roots
        # are valid or not
        if (root1 + root2 == -1 * b
            and root1 * root2 == c):
            print(int(root1),",",int(root2))
        else:
            print(-1)
    elif (d == 0):
 
        # Finding the roots
        root = -b // (2 * a)
 
        # Check if the roots
        # are valid or not
        if (root + root == -1 * b
            and root * root == c):
            print(root,",",root)
        else:
            print(-1)
 
    # when d < 0
    else:
 
        # No such pair exists in this case
        print(-1)
 
# Driver code
if __name__ == '__main__':
    S = 5
    P = 6
    findRoots(-S, P)
 
    S = 5
    P = 9
    findRoots(-S, P)
 
# This code is contributed by mohit kumar 29

C#

// C# program to find any pair
// which has sum S and product P.
 
using System;
 
public class GFG
{
 
    // Prints roots of quadratic equation
    // ax*2 + bx + c = 0
    static void findRoots(int b, int c)
    {
      
        int a = 1;
        int d = b * b - 4 * a * c;
      
        // calculating the sq root value
        // for b * b - 4 * a * c
        double sqrt_val = Math.Sqrt(Math.Abs(d));
      
        if (d > 0) {
            double x = -b + sqrt_val;
            double y = -b - sqrt_val;
      
            // Finding the roots
            int root1 = (int)(x) / (2 * a);
            int root2 = (int) (y) / (2 * a);
      
            // Check if the roots
            // are valid or not
            if (root1 + root2 == -1 * b
                && root1 * root2 == c)
                Console.Write( root1 + ", " + root2);
            else
                Console.Write( -1);
        }
        else if (d == 0) {
      
            // Finding the roots
            int root = -b / (2 * a);
      
            // Check if the roots
            // are valid or not
            if (root + root == -1 * b
                && root * root == c)
                Console.Write(root+ ", "+root);
            else
                Console.Write(-1);
        }
      
        // when d < 0
        else {
      
            // No such pair exists in this case
            Console.Write( -1);
        }
      
       Console.WriteLine();
    }
      
    // Driver code
    public static void Main (string []args)
    {
        int S = 5, P = 6;
        findRoots(-S, P);
      
        S = 5;
        P = 9;
        findRoots(-S, P);
    }
}
 
// This code is contributed by Yash_R

Javascript

<script>
// Javascript program to find any pair
// which has sum S and product P.
 
// Prints roots of quadratic equation
// ax*2 + bx + c = 0
function findRoots(b, c)
{
 
    var a = 1;
    var d = b * b - 4 * a * c;
 
    // calculating the sq root value
    // for b * b - 4 * a * c
    var sqrt_val = Math.sqrt(Math.abs(d));
 
    if (d > 0)
    {
        var x = -b + sqrt_val;
        var y = -b - sqrt_val;
 
        // Finding the roots
        var root1 = (x) / (2 * a);
        var root2 = (y) / (2 * a);
 
        // Check if the roots
        // are valid or not
        if (root1 + root2 == -1 * b
            && root1 * root2 == c)
            document.write(root1 + ", " + root2);
        else
            document.write(-1);
    }
    else if (d == 0)
    {
 
        // Finding the roots
        var root = -b / (2 * a);
 
        // Check if the roots
        // are valid or not
        if (root + root == -1 * b
            && root * root == c)
            document.write(root + ", " + root);
        else
            document.write(-1);
    }
 
    // when d < 0
    else
    {
 
        // No such pair exists in this case
        document.write(-1);
    }
 
    document.write("<br>");
}
 
// Driver code
var S = 5, P = 6;
findRoots(-S, P);
S = 5, P = 9;
findRoots(-S, P);
 
// This code is contributed by rutvik_56.
</script>
Producción: 

3, 2
-1

 

Publicación traducida automáticamente

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