# Program to differentiate the given Polynomial

• Last Updated : 29 Sep, 2022

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`

## C#

 `// C# program to differentiate the``// given polynomial` `using` `System;``using` `System.Collections.Generic;` `class` `GFG {` `    ``// Function to differentiate the``    ``// given term``    ``static` `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 += (pTerm[i]);` `        ``long` `coeff = Convert.ToInt64(coeffStr);` `        ``// Loop to get the power of each term``        ``string` `powStr = ``""``;``        ``for` `(i = i + 2; i != pTerm.Length; i++)``            ``powStr += (pTerm[i]);` `        ``long` `power = Convert.ToInt64(powStr);``        ``string` `a, b;` `        `  `        ``// For ax^n, we find (n)*a*x^(n-1)``        ``coeff = coeff * power;``        ``a = Convert.ToString(coeff);``        ``power--;``        ``b = Convert.ToString(power);``        ``S += a + ``"X^"` `+ b;` `        ``return` `S;``    ``}` `    ``// Function to differentiate the``    ``// given polynomial``    ``static` `string` `diffstr(``string` `poly)``    ``{` `        ``// We use istringstream to get``        ``// the input in tokens``        ``string``[] is1 = poly.Split(``" "``);` `        ``string` `S = ``""``;` `        ``// For every token, compute the``        ``// differentiation``        ``foreach``(``string` `pTerm ``in` `is1)``        ``{` `            ``// 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``    ``public` `static` `void` `Main(``string``[] args)``    ``{``        ``string` `str = ``"5x^4 + 6x^2 + 5x^2"``;``        ``Console.WriteLine(diffstr(str));``    ``}``}` `// This code is contributed by phasing17.`

## Javascript

 `// JS program to differentiate the``// given polynomial` `let MOD = (1e9 + 7);` `// Function to differentiate the``// given term``function` `diffTerm(pTerm)``{``    ``// Get the coefficient``    ``let coeffStr = ``""``, S = ``""``;``    ``let i;` `    ``// Loop to get the coefficient``    ``for` `(i = 0; pTerm[i] != ``'x'``; i++)``        ``coeffStr += (pTerm[i]);` `    ``let coeff``        ``= parseInt(coeffStr);` `    ``// Loop to get the power of each term``    ``let powStr = ``""``;``    ``for` `(i = i + 2; i != pTerm.length; i++)``        ``powStr += (pTerm[i]);` `    ``let power``        ``= parseInt(powStr);``    ``let a = ``""``;``    ``let b = ``""``;` `    ``// Converting the value``    ``// to the string``    ``let str1, str2;` `    ``// For ax^n, we find (n)*a*x^(n-1)``    ``coeff = coeff * power;``    ``str1 = coeff;``    ``a = str1;``    ``power--;``    ``str2 = power;``    ``b = str2;``    ``S += a + ``"X^"` `+ b;` `    ``return` `S;``}` `// Function to differentiate the``// given polynomial``function` `diffstr( poly)``{` `    ``// We use istringstream to get``    ``// the input in tokens``    ``let is = poly.split(``" "``);` `    ``let pTerm = ``""``, S = ``""``;` `    ``// For every token, compute the``    ``// differentiation``    ``for` `(pTerm of is)``   ``{``        ``// 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``let str = ``"5x^4 + 6x^2 + 5x^2"``;``console.log(diffstr(str));`  `// This code is contributed by phasing17`

Output:

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

My Personal Notes arrow_drop_up