+ محدودیت زمان: ۲ ثانیه
+ محدودیت حافظه: ۵۰ مگابایت
+ **در این سوال به هر بخش که پاسخ بدهید، نمرۀ همان قسمت را خواهید گرفت (توضیحات مربوط به امتیازدهی در انتهای صفحه قرار دارد)**
----------
در این سوال قصد داریم یک ماشین حساب برای سادهسازی عبارتهای جبری پیادهسازی کنیم. این ماشین حساب ۴ عمل اصلی جمع، تفریق، ضرب و تقسیم را پشتیبانی میکند.
+ عملگر `+` : این عملگر مشابه جمع در ریاضی بوده و اگر عبارتهای سمت چپ و سمت راست این عملگر از یک درجه باشند، ضرایب آن دو جمع میشوند؛ در غیر اینصورت تغییری ایجاد نمیشود.
+ عملگر `-` : این عملگر مشابه تفریق در ریاضی بوده و اگر عبارتهای سمت چپ و سمت راست این عملگر از یک درجه باشند، ضریبِ عبارتِ سمتِ راست از ضریبِ عبارتِ سمتِ چپ کم میشود؛ در غیر اینصورت تغییری ایجاد نمیشود.
+ عملگر `*` : این عملگر مشابه ضرب در ریاضی بوده و ضرایب عبارتهای سمت چپ و سمت راست را در یکدیگر ضرب میکند و توانِ $ x $ آنها را جمع میکند.
+ عملگر `%` : این عملگر مشابه تقسیم در ریاضی بوده و ضرایب عبارتهای سمت چپ را بر ضرایب عبارتهای سمت راست تقسیم میکند و توانِ $ x $ آنها را تفریق میکند.
اولویت محاسباتی، از زیاد به کم، به ترتیب پرانتز، توان، ضرب، تقسیم، جمع و تفریق میباشد. برای عملگرهایی که اولویت یکسان دارند، عملگری که در سمت چپ قرار دارد اولویت بالاتری بهدست میآورد.
+ عملگرهای جمع و تفریق دارای اولویت یکسان میباشند.
+ عملگرهای ضرب و تقسیم دارای اولویت یکسان میباشند.
----------
# ورودی
ورودی تنها شامل یک خط است که در آن یک عبارت جبری با طول حداکثر **۱۰۰۰** داده میشود.
+ تنها متغیرِ این عبارت جبری $ x $ میباشد.
+ ضریبِ $ x $ از دامنهی اعداد گویا میباشد و تنها به دو صورتِ کسری (مثلاً `a/b`) و صحیح (مثلاً `c`) داده میشود.
+ توانِ $ x $ از دامنهی اعداد صحیح نامنفی میباشد و تنها به صورت صحیح (مثلاً `d`) داده میشود.
$$ -2\ 147\ 483\ 648 \le a, b, c \le 2\ 147\ 483\ 647 $$
$$ b \ne 0 $$ $$ 0 \le d \le 2\ 147\ 483\ 647 $$
# خروجی
خروجی برنامهی شما باید شامل یک خط باشد که فرم سادهشدهی ورودی را به ترتیبِ نزولیِ توانِ $ x $ چاپ کند.
+ عبارتی که ضریب صفر دارد در خروجی نشانداده نشود.
+ عبارتی که در آن $ x $ از درجهی صفر باشد، فقط ضریب آن نمایش دادهشود. مثلاً به جای `23x^0` باید `23` نمایش دادهشود.
+ ضریبِ `1` نمایش دادهنشود. مثلاً به جای `2x^3` باید `x^3` نمایش دادهشود.
+ توانِ `1` نمایش دادهنشود. مثلاً به جای `23x^1` باید `23x` نمایش دادهشود.
+ ضرایب به صورتِ کسری (مثلاً `p/q`) نمایشداده شوند، که در آن `q` باید یک عدد طبیعی و `p` یک عدد صحیح باشد و `p` بر `q` بخشپذیر نباشد. در صورتی که `q` برابر با عدد `1` بود، ضریب به صورت صحیح (مثلاً `p`) نمایش دادهشود. تضمین میشود که `q` هیچگاه برابر با `0` نمیشود.
+ عبارت خروجی باید در سادهترین شکلِ ممکن باشد.
----------
# مثال
## ورودی نمونه ۱
```
2+x+x^2+x^0-1x^1-x
```
## خروجی نمونه ۱
```
x^2-x+3
```
<details>
<summary>توضیحات نمونه ۱</summary>
ابتدا جملات را به شکل زیر ساده میکنیم:
$x^0 \rightarrow 1$
$1x^1 \rightarrow x$
عبارت زیر بدستمیآید:
$2+x+x^2+1-x-x$
در نهایت ضرایبِ جملاتی را که درجۀ یکسان دارند، باهم جمع میکنیم و پاسخ مسئله بدستمیآید:
$x^2-x+3$
</details>
## ورودی نمونه ۲
```
2+2x^4+x^2-x^2-2*(1+x^4)
```
## خروجی نمونه ۲
```
0
```
<details>
<summary>توضیحات نمونه ۲</summary>
ابتدا جملات را به شکل زیر ساده میکنیم:
$2*(1+x^4) \rightarrow 2+2x^4$
عبارت زیر بدستمیآید:
$2+2x^4+x^2-x^2-2-2x^4$
در نهایت ضرایبِ جملاتی را که درجۀ یکسان دارند، باهم جمع میکنیم و پاسخ مسئله بدستمیآید:
$0$
</details>
## ورودی نمونه ۳
```
0+1*x+2*x^1+4/4
```
## خروجی نمونه ۳
```
3x+1
```
## ورودی نمونه ۴
```
(2+4*x^3+6*x^2)%(3*x^2+1+2*x^3)
```
## خروجی نمونه ۴
```
2
```
## ورودی نمونه ۵
```
(x^3+5x^2+x^1)%(2x+1)
```
## خروجی نمونه ۵
```
1/2x^2+9/4x-5/8
```
## امتیازدهی
+ برای پیادهسازی درست جمع و تفریق، **۷۰** امتیاز دریافت خواهیدکرد.
+ برای پیادهسازی درست ضرب و تقسیم، **۴۰** امتیاز دریافت خواهیدکرد.
+ برای پشتیبانی ضرایب ورودی سوال از دامنه اعداد گویا، **۴۰** امتیاز دریافت خواهیدکرد.
+ برای پشتیبانی درست جمع، تفریق و ضرب از پرانتز **۸۰** امتیاز دریافت خواهیدکرد.
+ برای پشتیبانی درست تقسیم از پرانتز زمانی که عبارت سمت چپ بر عبارت سمت راست بخش پذیر باشد، **۵۰** امتیاز دریافت خواهیدکرد.
+ برای پشتیبانی درست تقسیم از پرانتز در تمام حالات، **۱۲۰** امتیاز دریافت خواهیدکرد.
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.