বহুপদী পদ সম্বলিত একটি স্ট্রিং দেওয়া, কাজ হল সেই বহুপদীর ডেরিভেটিভ মূল্যায়ন করা।
বহুপদ কি?
বহুপদ দুটি শব্দ থেকে এসেছে:- "পলি" যার অর্থ "অনেক" এবং "নামিক" মানে "পদ", যা অনেকগুলি পদ নিয়ে গঠিত। বহুপদী রাশি হল ভেরিয়েবল, সহগ এবং সূচক সম্বলিত একটি রাশি, যেটিতে শুধুমাত্র চলক(গুলি) এর যোগ, গুণ এবং বিয়োগের মতো ক্রিয়াকলাপ জড়িত।
বহুপদীর উদাহরণ
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