C++ 多項式導數程式
給定一個包含多項式項的字串,任務是求該多項式的導數。
什麼是多項式?
多項式來自兩個詞:“Poly”表示“多”,“nomial”表示“項”,它包含多個項。多項式表示式是一個包含變數、係數和指數的表示式,其中僅涉及變數的加法、乘法和減法運算。
多項式的示例
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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP