# Program to differentiate the given Polynomial

• Last Updated : 27 Oct, 2020

Given polynomial string str, the task is to differentiate the given string and print the string after differentiating it.
Note: The input format is such that there is a white space between a term and the ‘+’, ’-’ symbol
Examples:

Input: str = “4X3 + 3X1 + 2X2”
Output: “12X2 + 3X0 + 4X1”
Explanation:
The derivative of p(x) = A*XN is p'(x) = A * N * XN – 1
Input: str = “5X4 + 6X2 + 5X2”
Output: “20X3 + 12X1 + 10X1”

Approach: The idea is to observe that when the given equation consists of multiple polynomials , the differentiation of the given polynomial . And, it is known that the derivative of is Therefore, we split the given string and differentiate every term in it.
Below is the implementation of the above approach:

## C++

 `// C++ program to differentiate the``// given polynomial` `#include "bits/stdc++.h"``#define MOD (1e9 + 7);``using` `ll = int64_t;``using` `ull = uint64_t;``#define ll long long``using` `namespace` `std;` `// Function to differentiate the``// given term``string diffTerm(string pTerm)``{``    ``// Get the coefficient``    ``string coeffStr = ``""``, S = ``""``;``    ``int` `i;` `    ``// Loop to get the coefficient``    ``for` `(i = 0; pTerm[i] != ``'x'``; i++)``        ``coeffStr.push_back(pTerm[i]);` `    ``long` `long` `coeff``        ``= ``atol``(coeffStr.c_str());` `    ``// Loop to get the power of each term``    ``string powStr = ``""``;``    ``for` `(i = i + 2; i != pTerm.size(); i++)``        ``powStr.push_back(pTerm[i]);` `    ``long` `long` `power``        ``= ``atol``(powStr.c_str());``    ``string a, b;` `    ``// Converting the value``    ``// to the string``    ``ostringstream str1, str2;` `    ``// For ax^n, we find (n)*a*x^(n-1)``    ``coeff = coeff * power;``    ``str1 << coeff;``    ``a = str1.str();``    ``power--;``    ``str2 << power;``    ``b = str2.str();``    ``S += a + ``"X^"` `+ b;` `    ``return` `S;``}` `// Function to differentiate the``// given polynomial``string diffstr(string& poly)``{` `    ``// We use istringstream to get``    ``// the input in tokens``    ``istringstream is(poly);` `    ``string pTerm, S = ``""``;` `    ``// For every token, compute the``    ``// differentiation``    ``while` `(is >> pTerm) {` `        ``// If the token is equal to``        ``// '+', '-' then``        ``// continue with the string``        ``if` `(pTerm == ``"+"``) {``            ``S += ``" + "``;``            ``continue``;``        ``}` `        ``if` `(pTerm == ``"-"``) {``            ``S += ``" - "``;``            ``continue``;``        ``}` `        ``// Otherwise find the differentiation``        ``// of that particular term``        ``else``            ``S += diffTerm(pTerm);``    ``}``    ``return` `S;``}` `// Driver code``int` `main()``{``    ``string str = ``"5x^4 + 6x^2 + 5x^2"``;``    ``cout << diffstr(str);``    ``return` `0;``}`

## Python3

 `# Python3 program to differentiate``# the given polynomial``MOD ``=` `(``1e9` `+` `7``)` `# Function to differentiate``# the given term``def` `diffTerm(pTerm):` `    ``# Get the coefficient``    ``coeffStr ``=` `""``    ``S ``=` `""` `    ``# Loop to get the``    ``# coefficient``    ``i ``=` `0``    ``while` `(i < ``len``(pTerm) ``and``           ``pTerm[i] !``=` `'x'``):``        ``coeffStr ``+``=` `(pTerm[i])``        ``i ``+``=` `1` `    ``coeff ``=` `int``(coeffStr)` `    ``# Loop to get the power``    ``# of each term``    ``powStr ``=` `""``    ``j ``=` `i ``+` `2``    ``while` `j < ``len``(pTerm):``        ``powStr ``+``=` `(pTerm[j])``        ``j ``+``=` `1` `    ``power ``=` `int``(powStr)` `    ``# For ax^n, we find``    ``# (n)*a*x^(n-1)``    ``coeff ``=` `coeff ``*` `power``    ``a ``=` `str``(coeff)``    ``power ``-``=` `1``    ``b ``=` `str``(power)``    ``S ``+``=` `a ``+` `"X^"` `+` `b` `    ``return` `S` `# Function to differentiate``# the given polynomial``def` `diffstr(poly):` `    ``pTerm ``=` `poly.split(``" "``)``    ``S ``=` `""``    ` `    ``for` `i ``in` `range``(``len``(pTerm)):` `        ``# If the token is equal to``        ``# '+', '-' then``        ``# continue with the string``        ``if` `(pTerm[i] ``=``=` `"+"``):``            ``S ``+``=` `" + "``            ``continue` `        ``if` `(pTerm[i] ``=``=` `"-"``):``            ``S ``+``=` `" - "``            ``continue` `        ``# Otherwise find the differentiation``        ``# of that particular term``        ``else``:``            ``S ``+``=` `diffTerm(pTerm[i])` `    ``return` `S` `# Driver code``if` `__name__ ``=``=` `"__main__"``:` `    ``st ``=` `"5x^4 + 6x^2 + 5x^2"``    ``print``(diffstr(st))` `# This code is contributed by Chitranayal`

Output:

```20X^3 + 12X^1 + 10X^1

```

My Personal Notes arrow_drop_up