একটি স্ট্রিং হিসেবে পলিনোমিয়ালের টার্ম দেওয়া আছে; কাজ হল সেই পলিনোমিয়ালের ডেরিভেটিভ (অবকলন) মান নির্ণয় করা।
পলিনোমিয়াল কী?
পলিনোমিয়াল শব্দটি দুটি শব্দের মিশ্রণ: "পলি" অর্থ "অনেক" এবং "নোমিয়াল" অর্থ "পদ"। পলিনোমিয়াল এক্সপ্রেশন হল এমন একটি এক্সপ্রেশন যাতে ভেরিয়েবল, কোএফিসিয়েন্ট এবং এক্সপোনেন্ট থাকে, এবং যাতে কেবল যোগ, বিয়োগ, গুণ ভাগ অপারেশন থাকে।
পলিনোমিয়ালের উদাহরণ: x² + x + 1
পলিনোমিয়াল p(x) = mxⁿ এর ডেরিভেটিভ হবে:
m * n * x⁽ⁿ⁻¹⁾
উদাহরণ
ইনপুট: str = "2x^3 +1x^1 + 3x^2" val = 2 আউটপুট: 37 ব্যাখ্যা: 6x² + 1x⁰ + 6x¹ x = 2 বসালে: 6*4 + 1 + 6*2 = 24 + 1 + 12 = 37 ইনপুট: str = "1x^3" val = 2 আউটপুট: 12 ব্যাখ্যা: 1 * 3 * x² x = 2 বসালে: 3 * 4 = 12
সমাধানের পদ্ধতি
- ইনপুট হিসেবে একটি স্ট্রিং এবং x এর মান নিন।
- স্ট্রিং ট্রাভার্স করে ডিজিট এবং ভেরিয়েবল চেক করুন।
- '+' চিহ্ন পাওয়া পর্যন্ত স্ট্রিং ট্রাভার্স এবং যোগ করুন।
- তারপর m * n * x⁽ⁿ⁻¹⁾ ফর্মুলা ব্যবহার করুন।
- ফলাফল রিটার্ন করুন।
অ্যালগরিদম
Start
Step 1→ ফাংশন long long term(string polyterm, long long val) এ
coeffStr = "" ডিক্লেয়ার ও ইনিশিয়ালাইজ করুন
i ডিক্লেয়ার করুন
For i = 0; polyterm[i] != 'x'; i++ লুপ
coeffStr.push_back(polyterm[i]) কল করুন
coeff = atol(coeffStr.c_str()) সেট করুন
powStr = "" ডিক্লেয়ার ও ইনিশিয়ালাইজ করুন
For i = i + 2; i != polyterm.size(); i++ লুপ
powStr.push_back(polyterm[i])
power = atol(powStr.c_str()) সেট করুন
Return coeff * power * pow(val, power - 1)
Step 2→ ফাংশন long long value(string& str, int val) এ
ans = 0 সেট করুন
istringstream is(str) কল করুন
string polyterm ডিক্লেয়ার করুন
While is >> polyterm লুপ
If polyterm == "+" হয়
Continue করুন
Else
ans = ans + term(polyterm, val) সেট করুন
Return ans
Step 3→ ফাংশন int main() এ
str = "2x^3 + 1x^1 + 3x^2" ডিক্লেয়ার ও ইনিশিয়ালাইজ করুন
val = 2 ডিক্লেয়ার ও ইনিশিয়ালাইজ করুন
value(str, val) থেকে প্রাপ্ত মান প্রিন্ট করুন
Stop
সি++ কোড উদাহরণ
#include <iostream>
#include <sstream>
#include <cmath>
#include <string>
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());
return coeff * power * pow(val, power - 1);
}
long long value(string& str, int val) {
long long ans = 0;
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