Given a polynomial string str, the task is to integrate the given string and print the string after integrating it. Note: The input format is such that there is a whitespace between a term and the ‘+’ symbol. Examples:
Input: str = “4X3 + 3X1 + 2X2” Output: X4 + (3/2)X2 + (2/3)X3 + C Input: str = “5X3 + 7X1 + 2X2 + 1X0” Output: (5/4)X4 + (7/2)X2 + (2/3)X3 + Xq + C
Approach: The idea is to observe that when the given equation consists of multiple polynomials , the integration of the given polynomial
. Also it is known that the indefinite integral of
is
. Therefore, we split the given string and integrate every term in it. Below is the implementation of the above approach:
CPP
// C++ program to find the indefinite// integral of the given polynomial #include "bits/stdc++.h"#define MOD (1e9 + 7);using ll = int64_t;using ull = uint64_t;#define ll long longusing namespace std; // Function to perform the integral// of each termstring inteTerm(string pTerm){ // Get the coefficient string coeffStr = "", S = ""; int i; // Loop to iterate and get the // Coefficient for (i = 0; pTerm[i] != 'x'; i++) coeffStr.push_back(pTerm[i]); long long coeff = atol(coeffStr.c_str()); string powStr = ""; // Loop to find the power // of the term for (i = i + 2; i != pTerm.size(); i++) powStr.push_back(pTerm[i]); long long power = atol(powStr.c_str()); string a, b; ostringstream str1, str2; // For ax^n, we find a*x^(n+1)/(n+1) str1 << coeff; a = str1.str(); power++; str2 << power; b = str2.str(); S += "(" + a + "/" + b + ")X^" + b; return S;} // Function to find the indefinite// integral of the given polynomialstring integrationVal(string& poly){ // We use istringstream to get the // input in tokens istringstream is(poly); string pTerm, S = ""; // Loop to iterate through // every term while (is >> pTerm) { // If the token = '+' then // continue with the string if (pTerm == "+") { S += " + "; continue; } if (pTerm == "-") { S += " - "; continue; } // Otherwise find // the integration of // that particular term else S += inteTerm(pTerm); } return S;} // Driver codeint main(){ string str = "5x^3 + 7x^1 + 2x^2 + 1x^0"; cout << integrationVal(str) << " + C "; return 0;} |
Java
// Java program to find the indefinite// integral of the given polynomialimport java.util.*;class GFG { // Function to perform the integral // of each term static String inteTerm(String pTerm) { // Get the coefficient String coeffStr = "", S = ""; int i; // Loop to iterate and get the // Coefficient for (i = 0; pTerm.charAt(i) != 'x'; i++) coeffStr += (pTerm.charAt(i)); long coeff = Long.valueOf(coeffStr); String powStr = ""; // Loop to find the power // of the term for (i = i + 2; i != pTerm.length(); i++) powStr += (pTerm.charAt(i)); long power = Long.valueOf(powStr); String a, b; // For ax^n, we find a*x^(n+1)/(n+1) a = String.valueOf(coeff); power++; b = String.valueOf(power); S += "(" + String.valueOf(a) + "/" + String.valueOf(b) + ")X^" + String.valueOf(b); return S; } // Function to find the indefinite // integral of the given polynomial static String integrationVal(String poly) { // We use iStringstream to get the // input in tokens String[] is1 = poly.split(" "); String S = ""; // Loop to iterate through // every term for (String pTerm : is1) { // If the token = '+' then // continue with the String if (pTerm.equals("+")) { S += " + "; continue; } if (pTerm.equals("-")) { S += " - "; continue; } // Otherwise find // the integration of // that particular term else S += inteTerm(pTerm); } return S; } // Driver code public static void main(String[] args) { String str = "5x^3 + 7x^1 + 2x^2 + 1x^0"; System.out.println(integrationVal(str) + " + C "); }}// This code is contributed by phasing17 |
Python3
# Python3 program to find the indefinite# integral of the given polynomialMOD = 1000000007# Function to perform the integral# of each termdef inteTerm( pTerm): # Get the coefficient coeffStr = "" S = ""; # Loop to iterate and get the # Coefficient i = 0 while pTerm[i] != 'x': coeffStr += (pTerm[i]); i += 1 coeff = int(coeffStr) powStr = ""; # Loop to find the power # of the term for j in range(i + 2, len(pTerm)): powStr += (pTerm[j]); power = int(powStr) a = "" b = ""; # For ax^n, we find a*x^(n+1)/(n+1) str1 = coeff; a = str1 power += 1 str2 = power; b = str2 S += "(" + str(a) + "/" + str(b) + ")X^" + str(b); return S; # Function to find the indefinite# integral of the given polynomialdef integrationVal(poly): # We use istringstream to get the # input in tokens is1 = poly.split(); S = ""; # Loop to iterate through # every term for pTerm in is1: # If the token = '+' then # continue with the string if (pTerm == "+") : S += " + "; continue; if (pTerm == "-"): S += " - "; continue; # Otherwise find # the integration of # that particular term else: S += inteTerm(pTerm); return S; # Driver codestr1 = "5x^3 + 7x^1 + 2x^2 + 1x^0";print(integrationVal(str1) + " + C ");# This code is contributed by phasing17 |
C#
// C# program to find the indefinite// integral of the given polynomialusing System;using System.Collections.Generic;class GFG { // Function to perform the integral // of each term static string inteTerm(string pTerm) { // Get the coefficient string coeffStr = "", S = ""; int i; // Loop to iterate and get the // Coefficient for (i = 0; pTerm[i] != 'x'; i++) coeffStr += (pTerm[i]); long coeff = Convert.ToInt64(coeffStr); string powStr = ""; // Loop to find the power // of the term for (i = i + 2; i != pTerm.Length; i++) powStr += (pTerm[i]); long power = Convert.ToInt64(powStr); string a, b; // For ax^n, we find a*x^(n+1)/(n+1) a = Convert.ToString(coeff); power++; b = Convert.ToString(power); S += "(" + Convert.ToString(a) + "/" + Convert.ToString(b) + ")X^" + Convert.ToString(b); return S; } // Function to find the indefinite // integral of the given polynomial static string integrationVal(string poly) { // We use istringstream to get the // input in tokens string[] is1 = poly.Split(" "); string S = ""; // Loop to iterate through // every term foreach(string pTerm in is1) { // If the token = '+' then // continue with the string if (pTerm == "+") { S += " + "; continue; } if (pTerm == "-") { S += " - "; continue; } // Otherwise find // the integration of // that particular term else S += inteTerm(pTerm); } return S; } // Driver code public static void Main(string[] args) { string str = "5x^3 + 7x^1 + 2x^2 + 1x^0"; Console.WriteLine(integrationVal(str) + " + C "); }}// This code is contributed by phasing17 |
Javascript
// JavaScript program to find the indefinite// integral of the given polynomial let MOD = (1e9 + 7); // Function to perform the integral// of each termfunction inteTerm( pTerm){ // Get the coefficient let coeffStr = "", S = ""; let i; // Loop to iterate and get the // Coefficient for (i = 0; pTerm[i] != 'x'; i++) coeffStr += (pTerm[i]); let coeff = parseInt(coeffStr) let powStr = ""; // Loop to find the power // of the term for (i = i + 2; i != pTerm.length; i++) powStr += (pTerm[i]); let power = parseInt(powStr) let a = "", b = ""; let str1, str2; // For ax^n, we find a*x^(n+1)/(n+1) str1 = coeff; a = str1 power++; str2 = power; b = str2 S += "(" + a + "/" + b + ")X^" + b; return S;} // Function to find the indefinite// integral of the given polynomialfunction integrationVal(poly){ // We use istringstream to get the // input in tokens let is = poly.split(" "); let pTerm, S = ""; // Loop to iterate through // every term for (pTerm of is) { // If the token = '+' then // continue with the string if (pTerm == "+") { S += " + "; continue; } if (pTerm == "-") { S += " - "; continue; } // Otherwise find // the integration of // that particular term else S += inteTerm(pTerm); } return S;} // Driver codelet str = "5x^3 + 7x^1 + 2x^2 + 1x^0";console.log(integrationVal(str) + " + C ");// This code is contributed by phasing17 |
(5/4)X^4 + (7/2)X^2 + (2/3)X^3 + (1/1)X^1 + C
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
