فرض کنید به شما دو دنباله داده شده است و شما مسئول آن هستید که ببینید آیا ترتیب کاراکترها در دنباله دوم، همان ترتیب در دنباله اول است یا خیر؟ کافیست از راست یا از چپ ترتیب حفظ شود.
مثلاً اگر دنباله اول abcdefghi
و دنباله دوم bfhi
باشد، ترتیب از چپ به راست در اولی حفظ شده است. مثالی دیگر که ترتیب را از راست به چپ حفظ کند، دنباله اول abcdefghi
و دنباله دوم gfdb
است که ترتیب آمدن اعضای دنباله دوم در اولی از راست به چپ است و ترتیب را حفظ کرده است.
مثالی بزنیم که ترتیب را نه از راست به چپ و نه از چپ به راست، حفظ نکرده باشد. دنباله اولی abcdefghi
و دنباله دومی bgic
.
برنامهای بنویسید که با گرفتن دنبالهها، مشخص کند آیا ترتیب (چه از راست و چه از چپ) حفظ شده است یا خیر.
توجه: ممکن است در دنباله دوم کاراکتری بیاید که در اولی نیست. روشن است که در این صورت پاسخ منفی است و ترتیب حفظ نشده است.
توجه: ممکن است از هر کاراکتر به هر تعداد موجود باشد. کافیست در یکی از حالات ترتیب حفظ شده باشد تا پاسخ مثبت باشد. برای مثال اگر دنباله اول abacdfeag
و دنباله دوم bca
باشد ترتیب حفظ شده است (با در نظر گرفتن آخرین a
).
در خط اول به شما عدد داده میشود که بیانگر تعداد زوجهای دنبالههاست. سپس به ازای هر زوج دنباله، در یک خط دنباله اول و در خط بعدی دنباله دوم میآید.
به ازای هر زوج دنباله اگر ترتیب حفظ شده است، YES
وگرنه NO
را چاپ کنید.
سامانه Quera دارای صفحه است و آدرس (URL) هرکدام از این صفحات، از الگوی مشخصی پیروی میکند. به عنوان مثال آدرس صفحه معرفی یک شرکت (در بخش شرکتها و فرصتهای شغلی)، الگوی زیر را دارد:
که به جای <company_name>
نام شرکت قرار میگیرد. مثلاً آدرس صفحه معرفی تیم هدهد در Quera به این صورت است:
https://quera.ir/careers/company/hodhod
الگوی آدرس یک سؤال در بانک سؤالات دارای بیش از یک پارامتر است:
بنابراین آدرس سؤالی با شناسه ۷۲۵ در دسته سؤالات المپیاد برابر این مقدار است:
https://quera.ir/problemset/olympiad/725
ممکن است در الگوی آدرس یک صفحه، هیچ پارامتری وجود نداشته باشد. مانند صفحه کلاسها (شامل لیست کلاسهایی که کاربر در آنها عضو است) که الگوی زیر را دارد:
روشن است که با هر پارامتری، آدرس تولیدشده از این الگو برابر با https://quera.ir/overview
است.
میخواهیم با داشتن نام صفحات و مقادیر پارامترهای موجود در الگوی آدرس صفحات، آدرس دقیق صفحات را به دست آوریم.
در خط اول ورودی، عدد میآید (). در خط بعد، در هر خط نام یک صفحه (با طول حداکثر ۱۰) و الگوی آدرس آن صفحه (با طول حداکثر ۱۰۰) با یک فاصله میآیند. نام صفحات از حروف کوچک انگلیسی تشکیل شدهاند.
سپس در خط بعدی عدد میآید (). در خط بعدی، در هر خط نام یک صفحه و مقادیر پارامترها به شکل parameter=value
میآیند. توجه کنید که ممکن است یک یا چند تا از پارامترهای موردنیاز برای ساختن آدرس دقیق، داده نشده باشد. همچنین ممکن است یک یا چند پارامتر اضافی (که موردنیاز نیست) داده شده باشد.
نام پارامترها، از حروف کوچک و بزرگ انگلیسی و _
(underline) تشکیل شده است. نام و مقادیر پارامترها حداکثر ۱۰۰ حرف هستند.
در خط، مقادیر دقیق آدرسهای خواستهشده را بنویسید.
در هر مورد، اگر نام صفحه خواستهشده در لیست صفحات وجود ندارد، خطای زیر را بنویسید:
همچنین اگر مقدار یک یا چند پارامتر موردنیاز داده نشده است، خطای زیر را بنویسید:
و اگر پارامتری اضافه داده شده (جزء پارامترهای مورد نیاز نیست)، آن را نادیده بگیرید.
دانشکدهی هوافضا به تازگی از فضاپیمای «شریف نورد» رونمایی کرده است. این فضاپیما دارای صندلی است که به صورت دوری چیده شدهاند و به صورت ساعتگرد روی آنها شمارههای ١ تا نوشته شده است. قرار است در پروازی آزمایشی همهی دانشجوی دانشکدهی هوافضا با این فضاپیما سفر کنند.
هرکدام از دانشجویان این دانشکده یک شماره دانشجویی یکتا از ١ تا دارد. مسئول این پرواز آزمایشی، به هر یک از دانشجویان یک کارت داده که روی هر کدام از آنها یک شماره از ١ تا نوشته شده است. در هنگام پرواز همهی دانشجویان به ترتیب شماره دانشجویی وارد «شریف نورد» شده و هر کس کارتی که در دستش هست را نگاه میکند و به سراغ صندلی با آن شماره میرود. اگر آن صندلی خالی بود روی آن مینشیند وگرنه صندلی در جهت ساعتگرد جلو میرود. اگر صندلی جدید خالی بود مینشیند و اگر خالی نبود باز صندلی در جهت ساعتگرد جلو میرود. او آن قدر این کار را تکرار میکند تا به یک صندلی خالی برسد. سپس آنجا مینشیند.
مثللاً اگر برابر ٣ باشد و برابر ٧ باشد و صندلی ۵ و ١ پر باشند، کسی که بخواهد روی صندلی ۵ بنشیند به جای این که روی ۵ بنشیند روی ۴ مینشیند.
مسئول پرواز پس از اینکه همه نشستند برای اینکه به همه نشان دهد باهوش است تصمیم گرفته است بدون این که به صندلیها نگاه کند بگوید هر دانشجویی روی کدام صندلی نشسته است. اما او دید این کار سخت است و آن قدر هم باهوش نیست. لذا از شما درخواست کمک کرده است.
در خط اول به ترتیب و و میآید. ( و و )
سپس در خط بعد عدد میآید که عدد ام، عدد کارت دانشجو با شماره دانشجویی را مشخص میکند. در خط بعد شمارهی دانشجویی از میان شمارهی دانشجویی موجود آمده است که شما باید بگویید هر یک بر روی چه صندلی ای نشستهاند (به همان ترتیبی که این عدد آمده اند.) در این عدد ممکن است اعداد تکراری نیز وجود داشته باشد.
اگر امکان نشستن همهی افراد وجود نداشت، در خروجی تنها کلمهی Impossibe
را چاپ کنید. در غیر این صورت شما باید عدد چاپ کنید که شماره صندلیهای افرادی است که سوال شدهاند.
در آخرین اکتشافات باستانشناسان در سرزمین «کهن»، یک دفترچه بسیار مرموز پیدا شده است. طی تحقیقات بسیار مشخص شد که این دفترچه، دفترچه خاطرات رستم است. پس از ناکام ماندن تلاش باستانشناسان برای خواندن خاطرات رستم، مشخص شد که رستم از بیم خوانده شدن خاطراتش، متن این دفترچه را با الگوریتمهای بسیار پیچیده رمزنگاری کرده است و کلید این رمز را در یکی از اهرام «دور» قرار داده است.
این کلید امروزه تحت تدابیر شدید امنیتی در موزه «دور باستان» نگهداری میشود و این موزه به هیچ وجه حاضر نیست این کلید را در اختیار باستانشناسان سرزمین «کهن» قرار دهد.
پس از اصرارهای زیاد باستانشناسان «کهن»، موزه «دور باستان» حاضر شد این کلید را در اختیار آنها بگذارد. بنابراین درب سالن محل نگهداری این کلید را باز کرد تا بروند و این کلید را بردارند. اما باستانشناسان باهوش «کهن» متوجه شدند در مسیر درب سالن تا خود کلید تعدادی تله قرار داده شده است. آنها با تجهیزات پیشرفتهی خود، مکان این تلهها را پیدا کردهاند و اکنون میخواهند همه مسیرهای ممکن برای رسیدن به کلید را بررسی کنند و بهترین مسیر را انتخاب کنند.
این سالن به شکل یک جدول است که در خانهی شماره ۱، باستانشناسان «کهن» قرار دارند (با نماد B) و در خانهی شماره ، کلید قرار دارد (با نماد K) و در برخی از خانههای دیگر تله وجود دارد (با نماد T). اگر باستانشناسان وارد خانهی تلهدار بشوند، به پایین میافتند و خوراک کوسهها میشوند.
باستانشناسان «کهن» در هر حرکت میتوانند یکی از این سه کار را انجام دهند:
برنامه شما باید تعداد همه راههای ممکن برای رسیدن باستانشناسان به کلید را محاسبه کند.
در خط اول، عدد n میآید و در خط بعدی نقشهی سالن به شکل یک رشته به طول از حروف B
و T
و K
و .
میآید. حرف .
نماد خانههای خالی است. مقدار حداکثر ٢٠٠ خواهد بود.
در خروجی تعداد راههای ممکن برای رسیدن باستانشناسان به کلید را بنویسید.
پس از رمز گشایی دفترچه خاطرات رستم، مشخص شد که پس از خوان هفتم و کشته شدن دیو سپید به دست رستم، رستم و سپاهش برای استراحت به سینما رفتهاند.
چینش صندلیهای سینما به صورت یک جدول است و بعضی از صندلیها خراب است. رستم و سپاهش وارد سینما شدند و روی صندلیهای سالم نشستند (تعداد سربازان دقیقاً به اندازه تعداد صندلیهای سالم بود.)
در هنگام پخش فیلم، هریک از سربازان در هر زمان در یکی از ۳ وضعیت زیر نسبت به فیلم قرار داشت:
اگر سربازان متعجب را با علامت !
، سربازان سؤالدار را با ?
، سربازان بیخیال را با _
(underline) و صندلیهای خراب را با #
نمایش دهیم، یک وضعیت از سربازان در سینما میتواند به این صورت باشد:
مدت فیلم ۱۰۰۰ ثانیه بود. در طول پخش فیلم، سربازان در مورد فیلم با سربازان مجاور حرف میزدند و وضعیت سربازان در هر ثانیه نسبت به ثانیه قبل طبق قوانین زیر تغییر میکرد.
وضعیت سربازان را در شروع فیلم میدانیم. میخواهیم بدانیم در پایان فیلم (یعنی بعد از ۱۰۰۰ ثانیه) چه تعداد سرباز متعجب و چه تعداد سرباز سؤالدار هستند.
برنامه باید در ابتدا عدد را بخواند و سپس نقشهی اولیهی سینما را که به صورت یک جدول است، بخواند. حداکثر ۵٠ خواهد بود. پس یک آرایه ۵٠ × ۵٠ برای ذخیره جدول کافی است.
در خط اول خروجی تعداد سربازان سؤالدار و در خط بعدی تعداد سربازان متعجب در انتهای فیلم را بنویسید.
در شروع فیلم:
ثانیه ۱:
ثانیه ۲:
ثانیه ۳:
ثانیه ۴:
ثانیه ۵:
ثانیه ۶:
در ثانیه ۷ تا ۱۰۰۰ (تا پایان فیلم) وضعیت سربازان به این شکل ثابت است:
بخشی از دفترچه خاطرات رستم بر اثر گذشت زمان پوسیده و یکی از خاطرات او ناخوانا شده است. قصد داریم این خاطرهی رستم را ترمیم کنیم. برای این کار مجموعهای از واژگان مورد استفادهی رستم را از بقیهی بخشهای دفترچه استخراج کردهایم و میخواهیم به کمک این واژهها، واژههای ناقص این خاطره را حدس بزنیم.
میدانیم رستم در خاطرات خود، فقط از ٢۶ حرف الفبای باستانی آن زمان استفاده میکرده است. برای این که کار شما در گرفتن ورودی راحت باشد، ما به جای آن الفبا، از ٢۶ حرف کوچک الفبای انگلیسی استفاده میکنیم.
در این خاطرهی رستم، تعدادی از حروف پوسیدهاند و به حروفی غیر از ٢۶ حرف الفبا تغییر کردهاند. بنابراین هر حرفی که به صورت یکی از ٢۶ حرف الفبا باقی مانده باشد، حتماً سالم مانده است.
برنامه شما باید ابتدا مجموعهای از واژگان مورداستفادهی رستم را دریافت کند و سعی کند به کمک آنها شکل درست کلمات این خاطره را پیدا کند.
مثلاً اگر مجموعه واژگان به صورت زیر باشد:
rostam, nabard, kolaahkhood, hastam, doshman, man, roodkhaane, sarzamin
میتوان تشخیص داد که جملهی m+2 =ost@| #as)2%
در واقع man rostam hastam
بوده است.
در خط اول ورودی عدد میآید. حداکثر ١٠٠٠ است.
در خط بعدی، مجموعه واژه مورداستفاده رستم در یک سطر میآید. این واژهها با space جدا شدهاند و فقط از حروف الفبای انگلیسی تشکیل شدهاند و حداکثر طول هرکدام ٢٠ است. در بین آنها ممکن است واژهای تکراری باشد. در خط بعدی، خاطره رستم که یک رشته با حداکثر ١٠٠٠٠ کلمه است میآید.
اگر ترمیم این خاطره ممکن نیست بنویسید not recoverable
. اگر کلمهای وجود دارد که به بیش از یک روش قابل ترمیم است فقط بنویسید multiple
و در غیر این صورت خاطرهی ترمیمشده را بنویسید.
در این سوال از شما خواسته شده است تا یک ماشین متنی کوچک با مجموعهای از قابلیت های ساده را پیادهسازی نمایید. روال کار بدین صورت است که در آغاز کار برنامه یک رشته متنی اولیه(به طول حداکثر 1000 کاراکتر) را از ورودی دریافت میکند. در ادامه تا زمانی که دستور خروج را دریافت کند در هر نوبت کاربر درخواست یک عملیات بر روی رشته متنی میدهد. عملیات ها به شرح زیر تعریف شدهاند:
دستور ورودی | توضیحات و خروجی |
---|---|
SHIFT-R N | تمام کاراکترهای عبارت را به صورت چرخشی N واحد به سمت راست منتقل میکند. |
SHIFT-L N | تمام کاراکترهای عبارت را به صورت چرخشی N واحد به سمت راست منتقل میکند. |
EXTEND N | به انتهای رشته موجود N کاراکتر جدید اضافه میکند و به عنوان مقدار پیشفرض کاراکترها، ستاره(*) قرار میدهد. |
SHRINK N | از انتهای رشته، N کاراکتر حذف میکند. درصورتی که طول رشته کمتر از N بود،رشته حاصل یک رشته خالی خواهد بود. |
REVERSE | رشته را معکوس میکند. |
PUT I C | حرف مکان Iام رشته را با حرف C جایگزین میکند.توجه داشته باشید که شماره مکانها از یک آغاز میشود و I همواره کوچکتر مساوی طول رشته خواهد بود. |
رشته فعلی را چاپ میکند و به خط بعد میرود. | |
EXIT | اتمام برنامه |
برنامه شما تنها به ازای عملیات چاپ خروجی خواهد داشت و به ازای سایر دستورات صرفاً عملیات موردنظر را برروی رشته متنی انجام میدهد. در پیادهسازی این سوال، شما باید به ازای تمامی دستورات(به جز خروج) یک تابع در نظر بگیرید و انجام عملیات توسط فراخوانی آن تابع انجام بگیرد. به عنوان نمونه امضای توابع باید به این صورت باشد:
مثال:
ورودی نمونه ۱
خروجی نمونه ۱
ورودی نمونه ۲
خروجی نمونه ۲
دور مورد تهاجم گیگیلیها قرار گرفته است. ارتش گیگیلیها وارد دور شده و قصد دارد هر شهری را که میتواند غارت کند. بین شهرهای دور راههایی کوهستانی با شیبهای مختلف وجود دارد اما سربازان گیگیلی به دلیل تنبلی فقط راههایی را انتخاب میکنند که در مجموع کمترین شیب ممکن را طی کنند! متاسفانه، فامیل دور، پادشاه دور با محدودیت سرباز مواجه است. پس تصمیم گرفته که سربازان خود را در شهرهای پراهمیت مستقر کند. او پس از مشورت با وزیران خود، جیگر و پسرعمهزا، به این نتیجه می رسد که شهری پر اهمیت است که تعداد زیادی از مسیرهایی که ارتش گیگیلیها انتخاب میکنند از آن بگذرد.
حال شما باید به او کمک کنید و به او بگویید از هرشهر چه تعدادی از این مسیرها میگذرد.
در خط اول تعداد شهرها و تعداد راههای کوهستانی بین شهرهاست. سپس در m
خط بعدی در هر خط سه عدد w, j , i
میآید که مشخص می کند از شهر i
ام به شهر j
ام مسیری کوهستانی با شیب w
وجود دارد. توجه کنید که مسیرها یکطرفه میباشند.
در خروجی در سطر i
ام تعداد مسیرهایی که رأس i
ام روی آنها قرار دارد نمایش داده میشود. توجه کنید که در محاسبه این مقدار مسیرهایی که راس i
در ابتدا یا انتهای آن واقع است شمرده نمیشوند.
نمونه ورودی
نمونه خروجی
در سال های دور در سرزمین صداقت، بیماری مهلکی شیوع پیدا کرده بود ، از آنجایی که فرد مبتلا به این بیماری بی درنگ تمام کارهای خود را از اطرافیان تقلید میکرد مردم آن زمان اسم این بیماری را کپیسم یا copism
گذاشتند. شدت شیوع این بیماری به قدری بود که پس از مدت کوتاهی حتی در روستاها افراد زیادی به این بیماری مهلک دچار شدند.
پادشاه این سرزمین که با رای مردم انتخاب میشد از این می ترسید که مبادا با وجود این بیماری مخالفت یک نفر از مردم با او موجب همراهی مردم و از بین رفتن سلطنتش بشود و از آنجایی که مهندسین کامپیوتر همیشه در صف اول خدمت هستند، از ایشان خواسته شد تا راه حلی برای این مشکل پیدا کنند.
شما باید برنامه ای بنویسید که با دریافت دو متن، کپ بودن آن ها را تشخیص دهد. نهایت خلاقیت مبتلایان به این بیماری جابه جایی جملات متن با یکدیگر و یا جابهجایی کلمات در یک جمله است.
کلمه تعدادی از حروف است که بین دو اسپیس، یک اسپیس با یک نقطه، یک اسپیس با یک ویرگول قرار می گیرد(حروفی که از اول متن تا اولین اسپیس آمده نیز یک کلمه محصوب میشوند). یک نقطه حتی اگر ویژگیهای فوق را داشته باشد باز هم یک کلمه محسوب نمیشود.
جمله تعدادی از کلمات است که بین دو نقطه قرار دارند. مجموعه ای از کلمات از اول متن تا اولین نقطه نیز یک جمله هستند.
فاصله(space) یا اینتر(newline) اضافه در یک متن دلیل بر کپ نبودن آن متن نیست. همچنین برزگی و کوچکی حروف در یکسان نبودن کلمات تأثیری ندارد. به طور مثال کلمات aLi
و Ali
یکسان در نظر گرفته میشوند.
در ورودی دو متن میآید که این دو متن با *
از یکدیگر جدا میشوند(تنها یک *
در ورودی موجود است که در یک خط جداگانه وارد شده و دو متن را از یکدیگر جدا می کند)
در صورتی که دو متن کپ باشند عبارت this is cop
و در صورتی که کپ نباشند عبارت this is not cop
باید در خروجی نمایش داده شوند.
مجموعههای معمولی که در این سوال به آن ها مجموعههای یک لایه می گوییم، مجموعههایی هستند که اعضای آنها فقط عدد هستند. در این سوال با مجموعههای چندلایه سر و کار داریم که اعضای آن علاوه بر عدد میتواند مجموعهی دیگری هم باشند که ممکن است در دل آنها نیز مجموعه دیگری باشد.
به بیان دیگر یک محموعه چند لایه مجموعهای است که اعضای آن میتوانند عدد و یا یک مجموعه چند لایه دیگر باشند و یک مجموعه یک لایه مجموعه ایست که اعضای آن فقط عدد هستند و عضو مجموعه ندارد.
برای جمع یک مجموعه چندلایه به ازای هر مجموعه چندلایه عضو آن، حاصل جمع آن مجموعه چند لایه را قرار میدهیم و این عددها را با سایر اعداد عضو مجموعه جمع می کنیم.
به عنوان ورودی یک مجموعه چندلایه داده میشود. میخواهیم جمع اعضای مجموعه و البته جمع همه اعضای مجموعه های تو در تو آن را به دست آوریم. برای جمع یک مجموعه به این صورت عمل میکنیم که اگر همه اعضای آن عدد بودند، جمع آن عددها را چاپ میکنیم.در غیر این صورت ابتدا این کار را برای همه مجموعه های درون آن(به ترتیب قرار گرفتنشان از سمت چپ به راست) انجام می دهیم و وقتی جمع همه مجموعه های درونش را به دست آوردیم و چاپ کردیم، آنها را با هم و همچنین سایر اعداد عضو مجموعه جمع میکنیم. برای هر مجموعهای که دیده می شود.
میتوانید فرض کنید مجموعه تهی نداریم و اعداد همه نامنفی هستند.
ورودی نمونه ۱
خروجی نمونه ۱
ورودی نمونه ۲
خروجی نمونه ۲
ورودی نمونه ۳
خروجی نمونه ۳