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 = “4X^{3}+ 3X^{1}+ 2X^{2}”Output:“12X^{2}+ 3X^{0}+ 4X^{1}”Explanation:

The derivative of p(x) = A*X^{N}is p'(x) = A * N * X^{N – 1}Input:str = “5X^{4}+ 6X^{2}+ 5X^{2}”Output:“20X^{3}+ 12X^{1}+ 10X^{1}”

**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

Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the **CS Theory Course** at a student-friendly price and become industry ready.