पॉलीनोमियल टर्म वाली एक स्ट्रिंग दी गई है, कार्य उस पॉलीनोमियल के अवकलज का मूल्यांकन करना है।
पॉलीनोमियल क्या है?
पॉलीनोमियल दो शब्दों से आता है: - "पॉली" जिसका अर्थ "कई" और "नोमियल" का अर्थ "टर्म्स" है, जिसमें कई टर्म्स शामिल होते हैं। पॉलीनोमियल एक्सप्रेशन एक ऐसा एक्सप्रेशन है जिसमें वेरिएबल्स, कोएफिशिएंट्स और एक्सपोनेंट्स होते हैं, जिसमें केवल वेरिएबल(एस) के जोड़, गुणा और घटाव के ऑपरेशन शामिल होते हैं।
पॉलीनोमियल का उदाहरण
x² + x + 1
पॉलीनोमियल p(x) = mxⁿ का अवकलज होगा -
m * n * x^(n-1)
उदाहरण
इनपुट: str = "2x^3 +1x^1 + 3x^2" val = 2 आउटपुट: 37 व्याख्या: 6x^2 + 1x^0 + 6x^1 x = 2 रखने पर 6*4 + 1 + 6*2 = 24 + 1 + 12 = 37 इनपुट: str = "1x^3" val = 2 आउटपुट: 12 व्याख्या: 1 * 3 * x^2 x = 2 रखने पर 3 * 4 = 12
उपरोक्त समस्या को हल करने के लिए हम जिस दृष्टिकोण का उपयोग करेंगे -
- इनपुट को एक स्ट्रिंग और x के मान के रूप में लें
- अब स्ट्रिंग को पार करें और अंकों और वेरिएबल्स की जांच करें।
- स्ट्रिंग को जोड़ते और पार करते रहें जब तक हमें '+' न मिल जाए।
- फिर m * n * x^(n-1)।
- परिणाम वापस करें।
एल्गोरिदम
शुरुआत चरण 1 → फंक्शन long long term(string polyterm, long long val) में coeffStr = "" घोषित और प्रारंभ करें i घोषित करें लूप i = 0 और polyterm[i] != 'x' और i++ के लिए coeffStr.push_back(polyterm[i]) कॉल करें coeff = atol(coeffStr.c_str()) सेट करें powStr = "" घोषित और प्रारंभ करें लूप i = i + 2 और i != polyterm.size() और i++ के लिए powStr.push_back(polyterm[i]) power = atol(powStr.c_str()) सेट करें coeff * power * pow(val, power - 1) वापस करें चरण 2 → फंक्शन long long value(string& str, int val) में ans = 0 सेट करें istringstream is(str) कॉल करें string polyterm घोषित करें लूप जब तक is >> polyterm यदि polyterm == "+" तो, जारी रखें अन्यथा ans = (ans + term(polyterm, val)) सेट करें ans वापस करें चरण 3 → फंक्शन int main() में str = "2x^3 + 1x^1 + 3x^2" घोषित और प्रारंभ करें val = 2 घोषित और प्रारंभ करें value(str, val) द्वारा प्राप्त मान प्रिंट करें रोकें
उदाहरण
#include#include #include using namespace std; long long term(string polyterm, long long val) { // गुणांक ढूंढने के लिए string coeffStr = ""; int i; for (i = 0; polyterm[i] != 'x'; i++) coeffStr.push_back(polyterm[i]); long long coeff = atol(coeffStr.c_str()); // पावर मान प्राप्त करने के लिए string powStr = ""; for (i = i + 2; i != polyterm.size(); i++) powStr.push_back(polyterm[i]); long long power = atol(powStr.c_str()); // ax^n के लिए, हम a(n-1)x^(n-1) वापस करते हैं return coeff * power * pow(val, power - 1); } long long value(string& str, int val) { long long ans = 0; // टोकन में इनपुट प्राप्त करने के लिए istringstream का उपयोग istringstream is(str); string polyterm; while (is >> polyterm) { // जांचें कि क्या टोकन '+' के बराबर है तो // स्ट्रिंग के साथ जारी रखें if (polyterm == "+") continue; // अन्यथा उस विशेष टर्म का अवकलज ढूंढें else ans = (ans + term(polyterm, val)); } return ans; } // मुख्य फंक्शन int main() { string str = "2x^3 + 1x^1 + 3x^2"; int val = 2; cout << value(str, val); return 0; }
आउटपुट
37