در یکی از سیارات منظومه آلفا قنطورس (Alpha Centauri - نزدیکترین منظومه ستارهای به منظومه شمسی)، موجودات عجیب و غریبی زندگی میکنند و هرکدام از آنها تعداد انگشتان دستش با بقیه فرق دارد. بعضی از آنها مانند ما ده انگشت در دو دست خود دارند و بعضی دیگر، ۱۶ انگشت، بعضی ۲ انگشت، بعضی ۶ انگشت و... به همین علت در این سیاره مدارس مختلفی برای موجودات مختلف وجود دارد و در هر مدرسه، اعداد با مبنای متفاوتی به بچهها آموزش داده میشوند.
کیانوش که یکی از ساکنین این سیاره است و ۱۰ انگشت دارد، به برنامهنویسی علاقه بسیاری دارد، او میخواهد برنامهای بنویسد که یک عدد را در مبنای ۱۰ بگیرد و آن را به مبنای خواسته شده ببرد. به او کمک کنید تا این مسئله برنامهنویسی را حل کند.
ورودی شامل دو عدد و است که دز يك خط به شما داده شده است. عدد مدنظر در مبنای ۱۰ و مبنای خواسته شده است.
در خروجی باید عدد را در مبنای چاپ کنید. توجه کنید که برای مبنای بزرگتر از ۱۰، برای نمایش رقمهایی نظیر ۱۰، ۱۱ و... از حروف انگلیسی B،A و... استفاده میشود. توجه کنید که این حروف در خروجی شما حتماً با حرف بزرگ نوشته شوند.
محدودیت زمان: ۲ ثانیه
محدودیت حافظه: ۲۵۶ مگابایت
یکی از اساتید دانشکده ریاضی که به پروژه Genealogy Mathematics خیلی علاقهمند است، بعد از مطالعه پیشینه اساتید خود و استادان آنها و... که در دیتابیس بزرگ این پروژه قرار دارند، در نهایت به ریاضیدان بزرگ کارل فریدریش گاوس به عنوان جد ریاضیاتی خود رسید که علاوه بر کارهای بسیار بزرگ در ریاضیات، داستانهایی در مورد محاسبه جمع اعداد ۱ تا ۱۰۰ با استفاده از فرمول را نیز به دوران مدرسه او نسبت میدهند. به این ترتیب این استاد دانشکده ریاضی، به اعدادی که از جمع اعداد ۱ تا ساخته شدهاند (مانند ۱، ۳، ۶، ۱۰، ۱۵ و...)، علاقهمند شد.
او نام این اعداد را اعداد خوب گذاشته و میخواهد که مقسومعلیههای مختلف آنها را بیابید؛ اما از آنجایی که بهشدت مشغول است، وقت برای نوشتن برنامه مورد نظر را ندارد و از شما خواسته است تا برنامهای بنویسید که یک عدد به عنوان ورودی از کاربر بگیرد و اولین عدد خوبی که حداقل مقسومعلیه طبیعی دارد را به عنوان خروجی بدهد.
ورودی شامل یک عدد طبیعی تعداد مقسومعلیههای عدد خوب مدنظر است.
خروجی برنامه شما، یک عدد طبیعی است. این عدد طبیعی باید اولین عدد طبیعی خوبی باشد که حداقل مقسومعلیه طبیعی دارد.
اولین عدد خوبی که چهار مقسومعلیه طبیعی دارد، عدد ۶ است.
قلی که از برنامهنویس شدنش ناامید شده است، تصمیم گرفته مشغول به کاشیکاری ساختمان شود! قلی اهل نمکستان است و در نمکستان، تمام کاشیها به شکل مربع و با ابعاد هستند. او باید قبل از شروع کار خود، کاشی های مورد نیازش را خریداری کند ولی همیشه در این کار دچار اشتباه میشود. به همین دلیل تصمیم گرفت برنامهای بنویسد که این محاسبات را برای او انجام دهد. اما از آنجایی که در برنامهنویسی به جایی نرسیده بود، نتوانسته است این مسئله را حل کند.
برنامهای بنویسید که با استفاده از آن، قلی بتواند تعداد کاشیهایی که از هر اندازه، برای اتاقی با ابعاد نیاز است را پیدا کند؛ بطوریکه کمترین تعداد کاشی ممکن استفاده شود.
توجه کنید که کاشیها نباید از اتاق بیرون بزنند.
در تنها خط ورودی، به ترتیب و داده میشود.
در خروجی باید به ترتیب بزرگترین کاشی های مورد استفاده و تعداد آن ها را در هر خط چاپ کنید. (به مثالها توجه کنید)
در خروجی باید به ترتیب بزرگترین کاشی های مورد استفاده و تعداد آن ها را در هر خط چاپ کنید. (به مثالها توجه کنید)
کامبیز به تازگی وارد کسب و کار شریف فروش پروکسی شده است. او میخواهد اقدام به پخش آیپی پروکسیهای خود کند. اما از آنجا که نمیخواهد کسی به او شک کند نقطه ها را ازآیپیها پاک کرده است!
حال شما که یکی از مشتریان وفادار کامبیز هستید برنامهای بنویسید که رشته از اعداد را با نقطه گذاری درست به آیپیهای مجاز تبدیل کند.
آی پی ورژن یا دارای فرمت است که در آن را می نامیم که یک عدد صحیح بین تا است.
در تنها خط ورودی یک رشته میآید، که نشان دهندهی رشته ایست که به كامبيز گفته است.
خروجی برنامهی شما باید شامل آیپیهای مجاز در خطوط جداگانه باشد. اگر آیپی مجازی یافت نشد در خروجی چیزی چاپ نکنید. ترتیب خروجی ها اهمیتی ندارد.
نکته: آی پی هایی مانند 55.01.18.59 را که در آن ها قبل از اعداد رقم صفر آمده است، در نظر نگیرید.
ممد و رضا یک بازی دونفره با هم انجام میدهند. ممد نقطه روی صفحه میگذارد و از رضا میخواهد تعدادی از این نقطه هارا طوری بهم وصل کند که یک درخت دودویی کامل با ارتفاع شود. تنها شرط مسأله این است که یال های درخت نباید همدیگر را قطع کنند.
درخت دودویی، درختی است که هریک از راسهای آن دقیقا دقیقا دو یاصفر فرزند دارند. درخت دودویی کامل با ارتفاع درخت دودوییای است که تا ارتفاع همه راس های آن دقیقا دو فرزند دارند و راس های ارتفاع ام هیچ فرزندی ندارند. راس های درخت دودویی را از 1 تا شماره گذاری میکنیم طوری که فرزندان راس ام دو راس و باشند.
به رضا کمک کنید که یک نقاشی مناسب بکشد. شما باید به ازای هر نقطه بگویید چه راسی باید در آن قرار بگیرد، طوری که با کشیدن یال های درخت، یالها با هم تقاطع نداشته باشند.
در اولین خط ورودی اعداد , آمدهاست. که به ترتیب تعداد نقطهها و ارتفاع درخت است، داده میشود. در هرکدام از خط بعدی، در هر سطر دو عدد صحیح میآید که مختصات نقطه ام در صفحه را نشان میدهد.
در سطر خروجی و در سطر ام شماره راسی را چاپ کنید که به نقطه ام (به ترتیبی که در ورودی داده شده است) نسبت دادهایم و اگر هم این نقطه در بین راس های درختتان نیست، عدد ۰ را برایش چاپ نمایید. اگر با نقطه های موجود نمیتوان هیچ درخت دودویی را کشید که یال هایش همدیگر را قطع نکنند، تنها در یک سطر عدد ۱- را چاپ کنید. دقت نمایید که جوابها لزوما یکتا نیستند.
نقاشی زیبای ممد برای این مثال برای فهم بهتر رضا از بازی :
پویا یک برنامه نوشته که اعداد یک تا پنج هزار را در خطوط مختلف چاپ میکند، البته متاسفانه کاراکتر \n
لپتاپش دچار مشکل شده و وقتی برنامه را اجرا کرد دید که برنامه تمامی اعداد ۱ تا را به ترتیب در یک خط چاپ کرده و در واقع یک عدد بسیار بزرگ تولید شده است (یعنی در خروجی عدد بسیار بزرگ ...۱۲۳۴۵۶۷۸۹۱۰۱۱۱۲۱۳ چاپ شده بود).
حال برای او سوال شده که امین رقم سمت چپ این عدد بسیار بزرگ چیست؟ به او کمک کنید تا جواب را پیدا کند.
در خط اول ورودی عدد داده میشود.
در خروجی رقم ام از چپ چاپ میشود.
محدودیت زمان: ۱ ثانیه
محدودیت حافظه: ۲۵۶ مگابایت
ولد یک ردیف رز دارد که هر کدام از آنها آخر هر ماه پژمرده شده و دوباره گل میدهد و هر بار که دوباره میروید میتواند سفید یا سیاه باشد. ولد که گلهای خود را خوب میشناسد میداند که اگر بعد از پایان دوره (منظور از دوره تعدادی ماه پشت سر هم است)، تعداد بارهایی که گل سفید داده است زوج باشد، آن رز بیبرکت است و باید آن را چید. برای مثال اگر ولد ۲ گل داشته باشد و بخواهد به مدت ۳ ماه آنها را در نظر بگیرد و وضعیت زیر پیش بیاید:
در این صورت گل اول ولد دو بار سفید بوده، که عددی زوج است پس گل اول بی برکت است و باید چیده شود اما گل دوم فقط یکبار سفید بوده که عددی فرد است، پس گلی خوب است.
حال به شما تعداد ماههای دوره و این که در هر ماه هر گل چه رنگی داشته، داده میشود؛ شما باید بگویید که در انتهای دوره هر گل بابرکت است یا خیر.
در خط اول به شما به ترتیب تعداد گلهای ولد و سپس تعداد ماههای دوره داده میشود.
در امین خط از خط بعدی، یک رشته به طول متشکل از B
و W
داده میشود که امین عنصر آن برابر با مقدار خانه واقع در تقاطع سطر ام و ستون ام میباشد.
W
به معنای سفید و
B
به معنای سیاه است.
در خروجی از شما خواسته شده که یک ردیف تایی از کاراکترها چاپ کنید.
به ازای هر گلی که زوج بار سفید بوده کاراکتر B
و به ازای بقیه آنها کاراکتر F
را چاپ کنید.
آریا میخواهد یک مزرعهی پلهای بخرد و در آن سماق کشت کند. وی پیش باجناقش میرود که به وی زمینی پیشنهاد دهد. اصغر عکسی از یک زمین به آریا نشان میدهد. حال آریا میخواهد ببیند که آیا این زمین را میتواند به مزرعه سماق تبدیل کند یا نه؟
سماق از آنجا که گیاه حساسی است فقط در شرایط خاصی میتواند کشت شود. تنها در زمینهایی که یک قله یا دره داشته باشد، میتوان سماق کاشت. هر زمین یک دنباله از پله است که هرکدام یک ارتفاع مشخص دارند و ارتفاع پله ام را با نشان میدهیم. یک زمین قله یا دره دارد اگر موجود باشد. برای وجود برقراری یکی از دو شرط زیر کافیست.
توجه کنید که میتواند برابر با باشد.
در خط اول ورودی عدد داده میشود و در خط دوم داده میشود.
در تنها خط خروجی شما باید بسته به اینکه این مزرعه میتواند مزرعه سماق باشد یا نه ، Yes
یا No
را چاپ کنید.
ویتی برای تحلیل اطلاعات مربوط به یکی از پروژه هایش نیاز دارد گراف زیر را بکشد: گراف ما از راس تشکیل شده است. روی هر یک از این راس ها یک عدد که یک عدد حسابی کوچکتر مساوی ۱۰۰۰۰۰ است نوشته شده است. دو راس و به هم وصل اند اگر و تنها اگر اختلاف و دقیقا برابر ۱ باشد. با گرفتن اعداد روی راس ها به ویتی کمک کنید تا بفهمد برای کشیدن گرافش به چند یال نیاز دارد.
در خط اول عدد داده میشود که تعداد راس هاست. در خط بعدی n عدد داده میشود که امی آنها عدد روی راس را نشان می دهد.
خروجی برنامه ی شما شامل یک عدد است که تعداد یال های لازم برای کشیدن این گراف را نشان میدهد.
بین راس شماره ۱ و ۲ و همچنین بین راس شماره ی ۲ و ۳ یال وجود دارد چون اختلاف عدد های روی آن ها (۱ و ۲) برابر ۱ است.
علی به تازگی با برنامه نویسی آشنا شده است و برای همین ذوق خاصی دارد. از این رو میخواهد سیستمی طراحی کند که یک لیگ فوتبال را شبیه سازی میکند.
در این سیستم، دستورات مختلفی وجود دارند که به شرح زیر میباشند:
این دستور، بازیکنی با نام name
، قیمت price
، سرعت speed
، قدرت تمامکنندگی finishing
و دفاع defence
میسازد.
توجه کنید که name
از جنس رشته، و باقی پارامترها از جنس عدد میباشند.
هر بازیکن، یک شناسهی عددی دارد که با استفاده از آن میتوان به آن بازیکن دسترسی داشت، اولین بازیکنی که ساخته میشود شناسهی عددی ۱، دومین بازیکنی که ساخته میشود شناسهی عددی ۲ و -امین بازیکنی که ساخته میشود شناسهی عددی دارد.
با استفاده از این دستور، میتوانید یک تیم جدید با نام name
و پول money
بسازید. در صورتی که از قبل تیمی با اسم name
وجود داشته باشد، تیم جدیدی ساخته نمیشود.
همچنین name
از جنس رشته و money
از جنس عدد میباشد.
هر تیم، یک شناسهی عددی دارد که با استفاده از آن میتوان به آن تیم دسترسی داشت، اولین تیمی که ساخته میشود شناسهی عددی ۱، دومین تیمی که ساخته میشود شناسهی عددی ۲ و -امین تیمی که ساخته میشود شناسهی عددی دارد.
با استفاده از این دستور، تیم با شناسهی عددی teamID
بازیکن با شناسهی عددی playerID
را میخرد.
همچنین همانطور که در بالا گفته شد، هر بازیکن یک قیمت (price) دارد و هر تیمی مقداری پول money
دارد و هنگام خرید یک بازیکن باید تیم مورد نظر پول کافی را برای خرید بازیکن داشته باشد و در صورتی که خرید موفقیت آمیز باشد، از پول تیم، به میزان قیمت بازیکن مورد نظر کم میشود.
توجه کنید که در امر خرید بازیکن ممکن هست حالتهای مختلفی پیش بیاید:
playerID
وجود نداشته باشد، باید عبارت player with the id playerID doesnt exist
را چاپ کنید.teamID
وجود نداشته باشد، باید عبارت team with the id teamID doesnt exist
را چاپ کنید.the team cant afford to buy this player
را چاپ کنید.player already has a team
را چاپ کنید.در صورتی که هیچکدام از حالت های بالا پیش نیایند، با موفقیت بازیکن مورد نظر خریداری میشود و باید عبارت player added to the team succesfully
را چاپ کنید.
توجه کنید که ممکن است چندین مورد از حالتهای بالا پیش بیایند، در این صورت شما باید اولین حالتی که پیش میآید را در نظر گرفته و خروجی مورد نظر را چاپ کنید و از بقیه حالتها صرف نظر کنید.
برای فروش بازیکن میتوان از دستور بالا استفاده کرد. با استفاده از این دستور، تیم با شناسهی عددی teamID
بازیکن با شناسهی عددی playerID
را به فروش میرساند.
همچنین موقع فروش بازیکن ممکن است حالتهای مختلفی پیش بیایند:
teamID
وجود نداشته باشد، باید عبارت team doesnt exist
را چاپ کنید.playerID
در آن تیم وجود نداشته باشد، باید عبارت team doesnt have this player
را چاپ کنید.در صورتی که حالتهای بالا پیش نیایند، یعنی با موفقیت بازیکن مورد نظر فروخته شده است و این بازیکن دیگر به تیمی تعلق ندارد (ممکن است در آینده توسط تیمی خریداری شود). در این حالت به اندازهی قیمت بازیکن فروخته شده، به پول تیم مورد نظر افزوده میشود. همچنین در این حالت باید عبارت player sold succesfully
را چاپ کنید.
با استفاده از این دستور، دو تیم با شناسههای عددی teamID1
و teamID2
با یکدیگر بازی میکنند.
همچنین ممکن است در اجرای این دستور، حالتهای مختلفی پیش بیاید:
team doesnt exist
را چاپ کنید.the game can not be held due to loss of the players
را چاپ کنید.در صورتیکه هیچکدام از مشکلات بالا پیش نیاید، بازی با موفقیت انجام میشود.
در ابتدا برای توصیف روند بازی، نیاز به تعریف پارامتر قدرت برای هر تیم داریم.
قدرت تیم اول (تیم با شناسهی عددی teamID1
) برابر است با مجموع سرعت و تمامکنندگی ۱۱ بازیکن اول آن تیم.
همچنین قدرت تیم دوم (تیم با شناسهی عددی teamID2
) برابر است با مجموع سرعت و دفاع ۱۱ بازیکن اول آن تیم.
توجه کنید که ترتیب بازیکنها در یک تیم، همان ترتیب زمانی اضافه شدن آنها به تیم میباشد.
در صورتی که قدرت دو تیم باهم برابر نباشد، تیمی برندهی بازی میشود که قدرت بیشتری دارد و به تعداد بردهای تیم برنده یک واحد اضافه میشود و به تعداد باختهای تیم بازنده نیز یک واحد اضافه میشود و به تیم برنده، به عنوان جایزه ۱۰۰۰ واحد پول داده میشود. در صورتی که قدرت دو تیم برابر باشد، بازی مساوی میشود و تعداد مساویهای هر دو تیم یک واحد افزایش پیدا میکند.
با استفاده از دستور بالا، باید جدول رتبهبندی تیمها را چاپ کنید.
شما باید تیمها را بر اساس تعداد بردها (هر تیمی که برد بیشتری داشته باشد رتبه بهتری دارد)، و در صورت برابری تعداد بردها، بر اساس تعداد باختهای کمتر مرتب کنید (اگر دو تیم بردهای برابری داشته باشند، تیم با باخت کمتر رتبه بهتری میگیرد) و به صورت زیر نام آنها را چاپ کنید:
که در آن teamName[0]
تیم با رتبهی ۱، teamName[1]
تیم با رتبهی ۲ و... میباشند.
توجه کنید که تعداد مساویها مهم نمیباشد و همچنین اگر دو تیم تعداد باختها و بردهایشان برابر بود، تیمی که شناسهی عددی کمتری دارد رتبهی بهتری میگیرد.
در انتها، پس از تمام شدن لیگ، عبارت بالا در خروجی داده میشود و به این معنی است که ورودیها تمام شده است و برنامه شما نیز پایان مییابد.
ورودی شامل چندین خط میباشد که در هر خط یکی از دستوراتی که در صورت سوال گفته شد، داده میشود.
همچنین در خط آخر ورودی، دستور end
داده میشود.
توجه کنید که ممکن است در ورودی داده شده، بعضی از خط ها خالی باشند و هیچ دستوری در آنها نباشد.
پس از اجرای برخی از دستورها، باید خروجیهایی را چاپ کنید که در توضیحات هر دستور در صورت نیاز گفته شده است. توجه کنید که هر خروجی باید در یک خط چاپ شود و از چاپ تمامی خروجیها در یک خط پرهیز کنید.
محدودیت زمان: ۰.۵ ثانیه
محدودیت حافظه: ۵۰ مگابایت
یک عدد اوّل را -خفن میگوییم هر گاه در مبنای از دو طرف به یک شکل خوانده شود. (عددی مانند ۱۳۷۳۱ در مبنای ۱۰ از دو طرف به یک صورت خوانده میشود.) ویتی از شما میخواهد امین عدد اوّل -خفن را بیابید.
ورودی تنها شامل یک خط است که در آن دو عدد طبیعی و با فاصله از هم آمدهاند. میدانیم که اعداد و به گونهای داده میشوند که خروجی کوچک تر از شود.
خروجی برنامهی شما باید شامل ۱ عدد باشد که امین عدد اول -خفن است.
هشت عدد اوّل ۱۰-خفن به ترتیب برابرند با: ۲، ۳، ۵، ۷، ۱۱، ۱۰۱، ۱۳۱، ۱۵۱. سایر اعداد اوّل بین این اعداد ۱۰-خفن نیستند.
چهار عدد اول ۲-خفن به ترتیب برابرند با: ۳، ۵، ۷، ۱۷. این اعداد در مبنای ۲ به ترتیب ۱۱، ۱۰۱، ۱۱۱، ۱۰۰۰۱ هستند که از دو طرف به یک شکل خوانده میشوند، اعداد اول ۲ ، ۱۱ و ۱۳ در مبنای ۲ به ترتیب ۱۰، ۱۰۱۱ و ۱۱۰۱ هستند که از دو طرف به یک شکل نیستند.
آقا حسین، یکی از دانشجویان قوی و پر تلاش رشته کامپیوتر دانشگاه دورقوزآباد، مشغول تمرین برنامه نویسی به کمکِ الگوریتم های بازگشتی بود که با سؤال جالبی برخورد کرد. حسین آقا که هنوز با مفاهیم آرایه و رشته آشنایی نداشت، تصمیم گرفت مرز های علم و دانش را جا به جا کرده و هر طور که ممکن است این سوال را حل کند.
برنامه ای بنویسید که تمامِ زیر مجموعه های مجموعه اعداد ۱ تا را به ترتیبی مانند مثال های داده شده، در خروجی چاپ کند.
آقا حسین پس از ساعت ها تلاشِ پیاپی، موفق به حل این سوال نشد، حال این شما و این سوالِ آقا حسین.
ورودی تنها شامل یک خط است که در آن عدد طبیعی آمده است.
هر خط از خروجی شامل یک زیر مجموعه از مجموعه اعداد ۱ تا بوده و اعضای مجموعه با یک فاصله از یک دیگر چاپ خواهند شد.
پشنج میخواهد در هزینههایش صرفهجویی کند؛ او برای این کار، مسیرهایی که در طول روز از آنها عبور میکند را در نظر میگیرد و سعی میکند آنها را مرتب کند.
او محلهایی که در آنها رفت و آمد دارد را با توجه به مسافت آن محل تا خانهاش شمارهگذاری کرده و از شما میخواهد که هر بار دو محل را به عنوان یک زوج مرتب در نظر بگیرید و این زوج مرتبها را با توجه به اینکه اختلاف مسافت کدام یک کمتر است مرتب کنید. فرض بر این است که پشنج هر روز مسیر سرراستی را طی میکند.
در خط اول که تعداد محلهاست داده میشود و در خط بعد عدد در یک خط به شما داده میشود که عدد ام نشان دهنده است که نمایانگر مسافت محلهاست. فاصله بین دو محل قدر مطلق اختلاف مسافت محلهاست. این نکته را در نظر داشته باشید که در صورتی که دو فاصله و با هم برابر بود، زوجی اولویت دارد که مسافت یکی از تکمحلهای این زوج از هر دو تکمحل دیگر کمتر باشد. به طور مثال اگر از و کوچکتر بود، زوج اولویت دارد.
توجه کنید که ممکن است مسافت یک محل چندین بار در ورودی بیاید و شما نباید مقدار تکراری را در نظر بگیرید؛ بنابراین باید از هر مقدار فقط یکی را در نظر بگیرید.
شما باید در خط خروجی، زوج مرتب را خروجی بدهید، به طوری که . این زوج مرتبها بر اساس قدرمطلق اختلاف و مرتب شدهاند. توجه کنید که برابر با تعداد اعداد متمایز آرایه است. در صورتی که اختلافها برابر بود، بر اساس مقدار مرتب کنید.
به طور مثال، در اینجا، اگر اعداد را مرتبشده در نظر بگیریم، بازه اعداد به صورت رو به رو خواهد بود:
حال این بازهها که سر و ته هر یک زوج مرتبی از اعداد بالاست را در نظر بگیرید:
اختلاف سر و ته هر بازه به صورت رو به رو خواهد بود:
اگر این بازهها را بر اساس اختلاف سر و ته هر بازه مرتب کنیم به خروجی میرسیم.
در این ورودی فقط یکی از ۴۳ ها در نظر گرفته شده است.
ماجرا از این قرار است که امیر حسین اعداد اول را خیلی دوست دارد... . وی در خانهی یک جدول قرار گرفته و میخواهد به خانهی برود. از شما کمک میخواهد تا یک مسیر مناسب از نقطهی شروع به نقطهی هدف را به او نشان دهید. این مسیر باید شرایط زیر را داشته باشد:
ابتدا عدد که نشان دهندهی تعداد تستهای سوال است داده میشود.
به ازای هر تست: عدد به عنوان سایز ماتریس و سپس عدد که نشان دهندهی مقادیر خانههای ماتریس هستند وارد میشوند.
سپس در یک خط، مختصات شروع و در خط بعدی مختصات پایان داده میشود.(برای فهم بهتر سوال، حتماً مثال را ببینید.)
تضمین می شود:
در خط به ازای هر تست، اگر مسیر مناسبی با شرایط گفته شده از نقطهی آغاز به نقطهی هدف وجود دارد، آن مسیر را با کاراکترهای نشان دهید و در غیر اینصورت "!No Monaseb Masir" را چاپ کنید.
علی که در روز پیش توانسته بود یک سیستم برای شبیه سازی لیگ فوتبال طراحی کند، حسابی مغرور شده است و به تواناییهای خود میبالد. حال میخواهد یک سیستم دیگر برای اعتبارسنجی رشتهها پیاده سازی کند، اما به دلیل خستگی زیاد پروژهی قبلی، نمیخواهد سیستمش زیادی پیچیده باشد!
این سیستم در ابتدا یک عدد به عنوان میزان خوبی دارد که مقدارش برابر با صفر میباشد.
همچنین برای شروع کار، یک رشته متشکل از حروف کوچک و بزرگ انگلیسی و کاراکترهای #
و !
و ?
و .
به طول حداکثر ۱۰۰۰ داده میشود. همچنین توجه کنید که رشته شامل فاصله (space) نمیباشد. این رشته را رشتهی مشکوک مینامیم.
حال عملیاتهایی وجود دارند که بر روی این رشته اعمال میشوند و با آن میتوان میزان اعتبار رشته را تشخیص داد.
در این دستور، key
یک رشته مشتکل از حروف کوچک و بزرگ انگلیسی و کاراکترهای #
و !
و ?
و .
میباشد و count
یک عدد طبیعی میباشد.
با استفاده از این دستور، شما باید رشتهی key
را به اندازهی count
مرتبه به خود بچسبانید (یعنی اگر key
برابر با ab
باشد و count
برابر با ۳ باشد، رشتهی به دست آمده برابر با ababab
میشود) و سپس اگر رشتهی نهایی، طولش باشد، باید حرف اول (سمت چپ) رشتهی مشکوک را حذف کنید و این رشتهی جدید را به ابتدای رشتهی مشکوک بچسبانید.
همچنین تضمین میشود در صورتی که key
را به اندازهی count
مرتبه به خودش بچسبانیم، طولش کمتر مساوی طول رشتهی مشکوک باشد.
برای مثال اگر رشتهی مشکوک برابر با aaabbbccc
باشد و دستور زیر داده شود:
رشتهی مشکوک برابر با zxzxbbccc
میشود.
در این دستور، key
یک رشته مشتکل از حروف کوچک و بزرگ انگلیسی و کاراکترهای #
و !
و ?
و .
میباشد.
شما باید رشتهی مشکوک را با رشتهی key
مقایسه کنید و در صورتی که این دو رشته با یکدیگر برابر باشند، میزان خوبی به اندازهی یک واحد افزایش پیدا میکند و در غیر اینصورت تغییری نمیکند.
در این دستور، key
یک رشته مشتکل از حروف کوچک و بزرگ انگلیسی و کاراکترهای #
و !
و ?
و .
میباشد و count
یک عدد طبیعی میباشد.
در صورتی که رشتهی key
دقیقا count
مرتبه به عنوان زیررشته در رشتهی مشکوک ظاهر شده باشد، میزان خوبی به اندازهی یک واحد افزایش پیدا میکند و در غیر اینصورت تغییری نمیکند.
در این دستور، key
و str
یک رشته مشتکل از حروف کوچک و بزرگ انگلیسی و کاراکترهای #
و !
و ?
و .
میباشند و count
یک عدد طبیعی میباشد.
شما باید رشتهی str
را به انتهای رشتهی key
بچسبانید و در صورتی که رشتهی بدست آمده دقیقا count
مرتبه به عنوان زیررشته در رشتهی مشکوک ظاهر شده باشد، میزان خوبی به اندازهی یک واحد افزایش پیدا میکند و در غیر اینصورت تغییری نمیکند.
برای مثال اگر رشتهی مشکوک برابر با abc
باشد و دستور زیر داده شود، یک واحد به میزان خوبی افزوده میشود:
در این دستور count
یک عدد طبیعی میباشد. در صورتی که طول رشتهی مشکوک دقیقا برابر با count
باشد، میزان خوبی به اندازهی یک واحد افزایش پیدا میکند و در غیر اینصورت تغییری نمیکند.
همچنین هنگامی که تمامی دستورها داده شوند، در انتها یک دستور به صورت Is it right or not?
داده میشود که از شما میپرسد آیا رشتهی مشکوک دارای اعتبار میباشد یا خیر.
در صورتی که میزان خوبی بیشتر و یا مساوی نصف تعداد دستورات داده شده باشد (دستورات copy
و compare
و substr
و attach
و length
)، رشته دارای اعتبار است و باید Eyval
را چاپ کنید و در غیر اینصورت دارای اعتبار نمیباشد و باید HeifShod
را چاپ کنید.
در خط اول ورودی، رشتهی مشکوک داده میشود که متشکل از حروف کوچک و بزرگ انگلیسی و کاراکترهای #
و !
و ?
و .
میباشد و طول آن حداکثر ۱۰۰۰ است.
در خطوط بعدی، در هر خط یکی از دستوراتی که در صورت سوال آمدهاند داده میشود. تعداد این دستورها کمتر از ۱۰۰۰ میباشد.
در خط نهایی، یک عبارت با عنوان Is it right or not?
میآید که توضیح آن در صورت سوال داده شده است.
در تنها خط خروجی، در صورتی که رشتهی مشکوک دارای اعتبار باشد باید عبارت Eyval
و در غیر اینصورت عبارت HeifShod
را چاپ کنید.
در این مثال، فقط در هنگام اجرای دستور attach
میزان خوبی اضافه نمیشود.