Dados dos polinomios representados por dos arrays, escribe una función que suma dos polinomios dados.
Ejemplo:
Input: A[] = {5, 0, 10, 6} B[] = {1, 2, 4} Output: sum[] = {6, 2, 14, 6} The first input array represents "5 + 0x^1 + 10x^2 + 6x^3" The second array represents "1 + 2x^1 + 4x^2" And Output is "6 + 2x^1 + 14x^2 + 6x^3"
Recomendamos encarecidamente minimizar su navegador y probarlo usted mismo primero.
La suma es más sencilla que la multiplicación de polinomios . Inicializamos el resultado como uno de los dos polinomios, luego recorremos el otro polinomio y sumamos todos los términos al resultado.
add(A[0..m-1], B[0..n01]) 1) Create a sum array sum[] of size equal to maximum of 'm' and 'n' 2) Copy A[] to sum[]. 3) Traverse array B[] and do following for every element B[i] sum[i] = sum[i] + B[i] 4) Return sum[].
La siguiente es la implementación del algoritmo anterior.
C++
// Simple C++ program to add two polynomials #include <iostream> using namespace std; // A utility function to return maximum of two integers int max(int m, int n) { return (m > n)? m: n; } // A[] represents coefficients of first polynomial // B[] represents coefficients of second polynomial // m and n are sizes of A[] and B[] respectively int *add(int A[], int B[], int m, int n) { int size = max(m, n); int *sum = new int[size]; // Initialize the product polynomial for (int i = 0; i<m; i++) sum[i] = A[i]; // Take ever term of first polynomial for (int i=0; i<n; i++) sum[i] += B[i]; return sum; } // A utility function to print a polynomial void printPoly(int poly[], int n) { for (int i=0; i<n; i++) { cout << poly[i]; if (i != 0) cout << "x^" << i ; if (i != n-1) cout << " + "; } } // Driver program to test above functions int main() { // The following array represents polynomial 5 + 10x^2 + 6x^3 int A[] = {5, 0, 10, 6}; // The following array represents polynomial 1 + 2x + 4x^2 int B[] = {1, 2, 4}; int m = sizeof(A)/sizeof(A[0]); int n = sizeof(B)/sizeof(B[0]); cout << "First polynomial is \n"; printPoly(A, m); cout << "\nSecond polynomial is \n"; printPoly(B, n); int *sum = add(A, B, m, n); int size = max(m, n); cout << "\nsum polynomial is \n"; printPoly(sum, size); return 0; }
Java
// Java program to add two polynomials class GFG { // A utility function to return maximum of two integers static int max(int m, int n) { return (m > n) ? m : n; } // A[] represents coefficients of first polynomial // B[] represents coefficients of second polynomial // m and n are sizes of A[] and B[] respectively static int[] add(int A[], int B[], int m, int n) { int size = max(m, n); int sum[] = new int[size]; // Initialize the product polynomial for (int i = 0; i < m; i++) { sum[i] = A[i]; } // Take ever term of first polynomial for (int i = 0; i < n; i++) { sum[i] += B[i]; } return sum; } // A utility function to print a polynomial static void printPoly(int poly[], int n) { for (int i = 0; i < n; i++) { System.out.print(poly[i]); if (i != 0) { System.out.print("x^" + i); } if (i != n - 1) { System.out.print(" + "); } } } // Driver program to test above functions public static void main(String[] args) { // The following array represents polynomial 5 + 10x^2 + 6x^3 int A[] = {5, 0, 10, 6}; // The following array represents polynomial 1 + 2x + 4x^2 int B[] = {1, 2, 4}; int m = A.length; int n = B.length; System.out.println("First polynomial is"); printPoly(A, m); System.out.println("\nSecond polynomial is"); printPoly(B, n); int sum[] = add(A, B, m, n); int size = max(m, n); System.out.println("\nsum polynomial is"); printPoly(sum, size); } }
Python3
# Simple Python 3 program to add two # polynomials # A utility function to return maximum # of two integers # A[] represents coefficients of first polynomial # B[] represents coefficients of second polynomial # m and n are sizes of A[] and B[] respectively def add(A, B, m, n): size = max(m, n); sum = [0 for i in range(size)] # Initialize the product polynomial for i in range(0, m, 1): sum[i] = A[i] # Take ever term of first polynomial for i in range(n): sum[i] += B[i] return sum # A utility function to print a polynomial def printPoly(poly, n): for i in range(n): print(poly[i], end = "") if (i != 0): print("x^", i, end = "") if (i != n - 1): print(" + ", end = "") # Driver Code if __name__ == '__main__': # The following array represents # polynomial 5 + 10x^2 + 6x^3 A = [5, 0, 10, 6] # The following array represents # polynomial 1 + 2x + 4x^2 B = [1, 2, 4] m = len(A) n = len(B) print("First polynomial is") printPoly(A, m) print("\n", end = "") print("Second polynomial is") printPoly(B, n) print("\n", end = "") sum = add(A, B, m, n) size = max(m, n) print("sum polynomial is") printPoly(sum, size) # This code is contributed by # Sahil_Shelangia
C#
// C# program to add two polynomials using System; class GFG { // A utility function to return maximum of two integers static int max(int m, int n) { return (m > n) ? m : n; } // A[] represents coefficients of first polynomial // B[] represents coefficients of second polynomial // m and n are sizes of A[] and B[] respectively static int[] add(int[] A, int[] B, int m, int n) { int size = max(m, n); int[] sum = new int[size]; // Initialize the product polynomial for (int i = 0; i < m; i++) { sum[i] = A[i]; } // Take ever term of first polynomial for (int i = 0; i < n; i++) { sum[i] += B[i]; } return sum; } // A utility function to print a polynomial static void printPoly(int[] poly, int n) { for (int i = 0; i < n; i++) { Console.Write(poly[i]); if (i != 0) { Console.Write("x^" + i); } if (i != n - 1) { Console.Write(" + "); } } } // Driver code public static void Main() { // The following array represents // polynomial 5 + 10x^2 + 6x^3 int[] A = {5, 0, 10, 6}; // The following array represents // polynomial 1 + 2x + 4x^2 int[] B = {1, 2, 4}; int m = A.Length; int n = B.Length; Console.WriteLine("First polynomial is"); printPoly(A, m); Console.WriteLine("\nSecond polynomial is"); printPoly(B, n); int[] sum = add(A, B, m, n); int size = max(m, n); Console.WriteLine("\nsum polynomial is"); printPoly(sum, size); } } //This Code is Contributed // by Mukul Singh
PHP
<?php // Simple PHP program to add two polynomials // A[] represents coefficients of first polynomial // B[] represents coefficients of second polynomial // m and n are sizes of A[] and B[] respectively function add($A, $B, $m, $n) { $size = max($m, $n); $sum = array_fill(0, $size, 0); // Initialize the product polynomial for ($i = 0; $i < $m; $i++) $sum[$i] = $A[$i]; // Take ever term of first polynomial for ($i = 0; $i < $n; $i++) $sum[$i] += $B[$i]; return $sum; } // A utility function to print a polynomial function printPoly($poly, $n) { for ($i = 0; $i < $n; $i++) { echo $poly[$i]; if ($i != 0) echo "x^" . $i; if ($i != $n - 1) echo " + "; } } // Driver Code // The following array represents // polynomial 5 + 10x^2 + 6x^3 $A = array(5, 0, 10, 6); // The following array represents // polynomial 1 + 2x + 4x^2 $B = array(1, 2, 4); $m = count($A); $n = count($B); echo "First polynomial is \n"; printPoly($A, $m); echo "\nSecond polynomial is \n"; printPoly($B, $n); $sum = add($A, $B, $m, $n); $size = max($m, $n); echo "\nsum polynomial is \n"; printPoly($sum, $size); // This code is contributed by chandan_jnu ?>
Javascript
<script> // Simple JavaScript program to add two // polynomials // A utility function to return maximum // of two integers // A[] represents coefficients of first polynomial // B[] represents coefficients of second polynomial // m and n are sizes of A[] and B[] respectively function add(A, B, m, n){ let size = Math.max(m, n); var sum = []; for (var i = 0; i < 10; i++) sum[i] = 0; // Initialize the product polynomial for(let i = 0;i<m;i++){ sum[i] = A[i]; } // Take ever term of first polynomial for (let i = 0;i<n;i++){ sum[i] += B[i]; } return sum; } // A utility function to print a polynomial function printPoly(poly, n){ let ans = ''; for(let i = 0;i<n;i++){ ans += poly[i]; if (i != 0){ ans +="x^ "; ans +=i; } if (i != n - 1){ ans += " + "; } } document.write(ans); } // Driver Code // The following array represents // polynomial 5 + 10x^2 + 6x^3 let A = [5, 0, 10, 6]; // The following array represents // polynomial 1 + 2x + 4x^2 let B = [1, 2, 4]; let m = A.length; let n = B.length; document.write("First polynomial is" + "</br>"); printPoly(A, m); document.write("</br>"); document.write("Second polynomial is" + "</br>"); printPoly(B, n); let sum = add(A, B, m, n); let size = Math.max(m, n); document.write("</br>"); document.write("sum polynomial is" + "</br>"); printPoly(sum, size); </script>
Producción:
First polynomial is 5 + 0x^1 + 10x^2 + 6x^3 Second polynomial is 1 + 2x^1 + 4x^2 Sum polynomial is 6 + 2x^1 + 14x^2 + 6x^3
La complejidad temporal del algoritmo y programa anterior es O(m+n) donde m y n son órdenes de dos polinomios dados.
Espacio auxiliar: O(max(m, n))
Este artículo es una contribución de Harsh. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA