سلام دوست عزیز! به آزمون ورودی آزمون ورودی کارآموزی زمستانه کداستار که توسط آکادمی ستاره برگزار میشه خوش اومدی! هدف این آزمون سنجش شیوه‌ی برنامه‌نویسی‌ات، در موضوعاتی مثل الگوریتم، گراف و شی‌گرایی هست. ترتیب سوالا هم از آسون به سخت هست. بعد از مسابقه، شیوه‌ی برنامه‌نویسی و امتیازی که توی این مسابقه گرفتی بررسی میشه و امیدواریم به مرحله‌ی بعدی که مصاحبه‌ی اسکایپی هست، دعوت بشی! ما در تیم آکادمی ستاره برات از صمیم قلب آرزوی موفقیت داریم و امیدواریم بتونیم توی کارآموزی ببینیمت :)

برای شرکت بهتر در مسابقه پیشنهاد می‌کنیم لینک‌های زیر را مطالعه کنی!

می‌تونی سوالاتت رو هم از قسمت "سوال بپرسید" مطرح کنی. همچنین برای دسترسی به آخرین اخبار و اطلاعیه‌ها (روال مصاحبه و دوره‌های بعدی) بعد از آزمون کانال رو چک کن:

ماشین حساب!


  • محدودیت زمان: ۲ ثانیه

  • محدودیت حافظه: ۵۰ مگابایت

  • در این سوال به هر بخش که پاسخ بدهید، نمرۀ همان قسمت را خواهید گرفت (توضیحات مربوط به امتیازدهی در انتهای صفحه قرار دارد)


در این سوال قصد داریم یک ماشین حساب برای ساده‌سازی عبارت‌های جبری پیاده‌سازی کنیم. این ماشین حساب ۴ عمل اصلی جمع، تفریق، ضرب و تقسیم را پشتیبانی می‌کند.

  • عملگر + : این عملگر مشابه جمع در ریاضی بوده و اگر عبارت‌های سمت چپ و سمت راست این عملگر از یک درجه باشند، ضرایب آن دو جمع می‌شوند؛ در غیر اینصورت تغییری ایجاد نمی‌شود.
  • عملگر - : این عملگر مشابه تفریق در ریاضی بوده و اگر عبارت‌های سمت چپ و سمت راست این عملگر از یک درجه باشند، ضریبِ عبارتِ سمتِ راست از ضریبِ عبارتِ سمتِ چپ کم می‌شود؛ در غیر اینصورت تغییری ایجاد نمی‌شود.
  • عملگر * : این عملگر مشابه ضرب در ریاضی بوده و ضرایب عبارت‌های سمت چپ و سمت راست را در یکدیگر ضرب می‌کند و توانِ x x آن‌ها را جمع می‌کند.
  • عملگر % : این عملگر مشابه تقسیم در ریاضی بوده و ضرایب عبارت‌های سمت چپ را بر ضرایب عبارت‌های سمت راست تقسیم می‌کند و توانِ x x آن‌ها را تفریق می‌کند.

اولویت محاسباتی، از زیاد به کم، به ترتیب پرانتز، توان، ضرب، تقسیم، جمع و تفریق می‌باشد. برای عملگرهایی که اولویت یکسان دارند، عملگری که در سمت چپ قرار دارد اولویت بالاتری به‌دست می‌آورد.

  • عملگرهای جمع و تفریق دارای اولویت یکسان می‌باشند.
  • عملگرهای ضرب و تقسیم دارای اولویت یکسان می‌باشند.

ورودی🔗

ورودی تنها شامل یک خط است که در آن یک عبارت جبری با طول حداکثر ۱۰۰۰ داده می‌شود.

  • تنها متغیرِ این عبارت جبری x x می‌باشد.
  • ضریبِ x x از دامنه‌ی اعداد گویا می‌باشد و تنها به دو صورتِ کسری (مثلاً a/b) و صحیح (مثلاً c) داده می‌شود.
  • توانِ x x از دامنه‌ی اعداد صحیح نامنفی می‌باشد و تنها به صورت صحیح (مثلاً d) داده می‌شود.

2 147 483 648a,b,c2 147 483 647 -2\ 147\ 483\ 648 \le a, b, c \le 2\ 147\ 483\ 647 b0 b \ne 0 0d2 147 483 647 0 \le d \le 2\ 147\ 483\ 647

خروجی🔗

خروجی برنامه‌ی شما باید شامل یک خط باشد که فرم‌ ساده‌شده‌ی ورودی را به ترتیبِ نزولیِ توانِ x x چاپ کند.

  • عبارتی که ضریب صفر دارد در خروجی نشان‌داده نشود.
  • عبارتی که در آن 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
Plain text

خروجی نمونه ۱🔗

x^2-x+3
Plain text
توضیحات نمونه ۱

ابتدا جملات را به شکل زیر ساده می‌کنیم:

x01x^0 \rightarrow 1

1x1x1x^1 \rightarrow x

عبارت زیر بدست‌می‌آید:

2+x+x2+1xx2+x+x^2+1-x-x

در نهایت ضرایبِ جملاتی را که درجۀ یکسان دارند، باهم جمع می‌کنیم و پاسخ مسئله بدست‌می‌آید:

x2x+3x^2-x+3

ورودی نمونه ۲🔗

2+2x^4+x^2-x^2-2*(1+x^4)
Plain text

خروجی نمونه ۲🔗

0
Plain text
توضیحات نمونه ۲

ابتدا جملات را به شکل زیر ساده می‌کنیم:

2(1+x4)2+2x42*(1+x^4) \rightarrow 2+2x^4

عبارت زیر بدست‌می‌آید:

2+2x4+x2x222x42+2x^4+x^2-x^2-2-2x^4

در نهایت ضرایبِ جملاتی را که درجۀ یکسان دارند، باهم جمع می‌کنیم و پاسخ مسئله بدست‌می‌آید:

00

ورودی نمونه ‎۳🔗

0+1*x+2*x^1+4/4
Plain text

خروجی نمونه ۳🔗

3x+1
Plain text

ورودی نمونه ‎۴🔗

(2+4*x^3+6*x^2)%(3*x^2+1+2*x^3)
Plain text

خروجی نمونه ۴🔗

2
Plain text

ورودی نمونه ‎۵🔗

(x^3+5x^2+x^1)%(2x+1)
Plain text

خروجی نمونه ۵🔗

1/2x^2+9/4x-5/8
Plain text

امتیاز‌دهی🔗

  • برای پیاده‌سازی درست جمع و تفریق، ۷۰ امتیاز دریافت خواهیدکرد.
  • برای پیاده‌سازی درست ضرب و تقسیم، ۴۰ امتیاز دریافت خواهیدکرد.
  • برای پشتیبانی ضرایب ورودی سوال از دامنه اعداد گویا، ‍‍۴۰ امتیاز دریافت خواهیدکرد.
  • برای پشتیبانی درست جمع، تفریق و ضرب از پرانتز ۸۰ امتیاز دریافت خواهیدکرد.
  • برای پشتیبانی درست تقسیم از پرانتز زمانی که عبارت سمت چپ بر عبارت سمت راست بخش پذیر باشد، ۵۰ امتیاز دریافت خواهیدکرد.
  • برای پشتیبانی درست تقسیم از پرانتز در تمام حالات، ۱۲۰ امتیاز دریافت خواهیدکرد.
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.