다항식 항을 포함하는 문자열이 주어지면 작업은 해당 다항식의 도함수를 평가하는 것입니다.
다항식이란 무엇입니까?
다항식은 "많은"을 의미하는 "Poly"와 많은 용어로 구성된 "항"을 의미하는 "항"이라는 두 단어에서 유래합니다. 다항식은 변수, 계수 및 지수를 포함하는 표현식으로 변수의 덧셈, 곱셈 및 뺄셈과 같은 연산만 포함합니다.
다항식의 예
x2+x+1
다항식의 도함수 p(x) =mx^n은 -
가 됩니다.m * n * x^(n-1)
예시
Input: str = "2x^3 +1x^1 + 3x^2" val = 2 Output: 37 Explanation: 6x^2 + 1x^0 + 6x^1 Putting x = 2 6*4 + 1 + 6*2 = 24 + 1 + 12 = 37 Input: str = “1x^3” val = 2 Output: 12 Explanation: 1 * 3 *x^2 Putting x = 2 3 * 4 = 12
위 문제를 해결하기 위해 사용할 접근 방식 -
- 문자열과 x 값으로 입력
- 이제 문자열을 탐색하고 숫자와 변수를 확인합니다.
- '+'를 찾을 때까지 문자열을 계속 추가하고 탐색합니다.
- m * n * x^(n-1).
- 결과를 반환합니다.
알고리즘
Start Step 1-> In function long long term(string polyterm, long long val) Declare and initialize coeffStr = "” Declare i Loop For i = 0 and polyterm[i] != 'x' and i++ Call coeffStr.push_back(polyterm[i]) Set coeff = atol(coeffStr.c_str() Declare and initialize powStr = "" Loop For i = i + 2 and i != polyterm.size() and i++ powStr.push_back(polyterm[i]) Set power = atol(powStr.c_str()); Return coeff * power * pow(val, power - 1) Step 2-> In function long long value(string& str, int val) Set ans = 0 Call istringstream is(str) Declare string polyterm Loop While is >> polyterm If polyterm == "+” then, Continue Else Set ans = (ans + term(polyterm, val)) Return ans Step 3-> In function int main() Declare and initialize str = "2x^3 + 1x^1 + 3x^2" Declare and initialize val = 2 Print the value received by value(str, val) Stop
예시
#include using namespace std; long long term(string polyterm, long long val) { //to find the coefficient string coeffStr = ""; int i; for (i = 0; polyterm[i] != 'x'; i++) coeffStr.push_back(polyterm[i]); long long coeff = atol(coeffStr.c_str()); // to get the power value string powStr = ""; for (i = i + 2; i != polyterm.size(); i++) powStr.push_back(polyterm[i]); long long power = atol(powStr.c_str()); // For ax^n, we return a(n-1)x^(n-1) return coeff * power * pow(val, power - 1); } long long value(string& str, int val) { long long ans = 0; // using istringstream to get input in tokens istringstream is(str); string polyterm; while (is >> polyterm) { // check if the token is equal to '+' then // continue with the string if (polyterm == "+") continue; // Otherwise find the derivative of that // particular term else ans = (ans + term(polyterm, val)); } return ans; } // main function int main() { string str = "2x^3 + 1x^1 + 3x^2"; int val = 2; cout << value(str, val); return 0; }
출력
37