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.
Here: a = 1 b = -S c = P
Por lo tanto, la ecuación anterior se cambiará como:
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