محمد حیدری به تازگی بعد از گذشت 14 ترم از ورودش به رشته مهندسی کامپیوتر دانشگاه ولی عصر، فارغ التحصیل و بالاخره از دانشگاه آزاد شده است! احتمالا نمیتوانید تصور کنید که وی چقدر از پیشرفت محیط پیرامونش شگفتزده شدهاست. قبل از اینکه به دانشگاه برود، عدهی کمی از گوشی هوشمند استفاده میکردند؛ اما اکنون همه گوشی هوشمند دارند و سبک زندگیها تغییر کردهاست. در اولین روزهای اول پس از فارغ التحصیلی، یکی از دوستانش به مناسبت این روز بزرگ، یک کد تخفیف اسنپ برایش فرستاد و وی را با اسنپ آشنا کرد.
او پس از چندین بار استفاده از اسنپ و معرفی به دوستان خود و استفاده از کد تخفیف برای سفرهای بعدی متوجه شد که زیرالفبا همه کدهای تخفیف یکسان است. زیرالفبا یک رشته برابر است با مجموعهی حروف متفاوت که در این رشته وجود دارند. برای مثال اگر کد تخفیف XHx2ZLL
باشد زیرالفبای آن برابر با خواهد بود.
امروز یکی از دوستان محمد به او کد تخفیف اسنپ، که آنها را با نشان میدهیم، فرستادهاست؛ محمد میخواهد قبل از استفاده از این کدهای تخفیف مطمئن شود که این کدهای تخفیف معتبر هستند. او برای هر کد تخفیف، میخواهد زیرالفبا آن را با زیرالفبای کد تخفیف معتبر و استفادهشده مقایسه کند تا متوجه شود که کدامین کدهای تخفیف معتبر هستند. از آنجا که این فرایند طول خواهد کشید، شما باید برنامهای بنویسید تا مشخص کند هر کد تخفیف معتبر هست یا خیر.
سطر اول ورودی شامل عدد طبیعی و کد تخفیف است. سپس در سطر بعدی به ترتیب و و ... و آمدهاست. تضمین میشود همه کدهای تخفیف ورودی تنها از حروف کوچک و بزرگ و ارقام انگلیسی تشکیل شدهاند.
در خروجی باید سطر چاپ کنید. در سطر ام Yes
چاپ کنید اگر کد تخفیف ام معتبر است و در غیر اینصورت No
چاپ کنید.
ریحانه و پروانه ماموران سمباف (سازمان مبارزه با اساتید فراری!) هستند که تحرکات یک استاد فراری (از دست دانشجویان) را دنبال میکنند. منابعی ناشناس آنها را از تلاش اخیر وی برای فرار مطلع کردهاند. آنها اکنون میدانند که وی قصد دارد از ارتباطات خود برای سوار شدن بر جت CIA در فرودگاه رفسنجان استفاده کند. اطلاعات دست اول سمباف تایید کرده است که همه جتهای سازمان سیا در کدهای ارتباطی خود دارای رشته FBI هستند. ریحانه و پروانه فهرستی از تمام جتهای آماده شده برای روز تعیین شده را جمع آوری کردند. دقیقاً پنج جت در این لیست وجود دارد. برنامه ای بنویسید که تمام جت های سیا را پیدا کند.
دقیقا 5 ردیف رشته به عنوان ورودی داده میشود. هر ردیف دقیقاً یک کد ارتباطی جت سیا از لیست را نشان میدهد. کد ارتباطی حداکثر از 10 حرف انگلیسی بزرگ، اعداد 0 تا 9 و یا خط فاصله (-) تشکیل شده است.
تنها خط خروجی باید حاوی لیستی از اعداد صحیح باشد که شماره ردیفهای ورودی مربوطه را که شامل کدهای ارتباطی ثبت شده جتهای سیا است، به ترتیب افزایشی نشان میدهد.
اگر جت سیا وجود ندارد، رشته !HE GOT AWAY را خروجی بدهد.
توجه: حروف بزرگ و کوچک متفاوت در نظر گرفته می شوند، بنابراین عبارت !He Got Away غلط است!
ریحانه، میخواهد برای عید نوروز شیرینی مربایی به شکل مثلث بسازد. مشکل اینجاست که برای ساخت قالبهای شیرینی فقط مقدار محدودی ورق فلزی دارد. البته ریحانه وسواس دارد و میخواهد حتما طول اضلاع مثلثی اعداد طبیعی باشند. برنامهای بنویسید تا به ریحانه نشان دهد که با این مقدار چند مدل شیرینی مثلثی میتواند بسازد؟
دو قاب شیرینی مثلثی متفاوت در نظر گرفته میشوند اگر مجموعهی طول اضلاع آنها با یکدیگر متفاوت باشند. (به مثالها و شکلهایشان توجه کنید!)
در تنها سطر ورودی عدد طبیعی آمده است که طول ورق اولیه را نشان میدهد.
در تنها سطر خروجی باید تعداد قالبهایی که ریحانه میتواند بسازد چاپ شود.
توضیح مثال ۲: مهدی با چوبی به طول ۱۲، قاب عکسهایی به شکلهای زیر میتواند بسازد.
مهدی به شدت به پادکست علاقه دارد. وی روزانه پادکستهای مختلفی (به ویژه پادکام، پادکست اختصاصی انجمن مهندسی کامپیوتر دانشگاه ولی عصر) را گوش میکند و کلمات کلیدی آنها را یادداشت مینماید. حال میخواهد این کلمات را به هم بچسباند و در یک فایل ذخیره کند. به دلیل این که این پادکست برای او بسیار مهم است، وی میخواهد مکان فایل در پوشهای که آن را ذخیره میکند در بالاترین جای ممکن باشد. نحوه جایگیری فایل ها در کامپیوتر او به صورت الفبایی است. برای همین او میخواهد که رشتهی نهایی به صورت الفبایی کوچکترین حالت ممکن را داشته باشد.
اگر و دو رشته از حروف باشند، که تعداد حروفشان یکسان است و حرف iام رشتهی s , حرف م رشتهی را نشان دهد، آنگاه گوییم از به صورت الفبایی کوچکتر است اگر برای یک داشته باشیم و برای تمام داشته باشیم .
در سطر اول ورودی آمده است که نشاندهندهی تعداد کلمات است.
در خط بعدی در هر خط یک کلمه آمده است. طول رشتهی برابر است. هر رشته از حروف کوچک انگلیسی تشکیل شدهاست.
خروجی شامل یک رشته است که نشاندهندهی رشته قابل ساختی است که از نظر الفبایی کمینه است.
محمدجواد با چسباندن کلمه ها به هم میتواند این ۶ رشته را بسازد: { , , , , ,} که از بین آنها رشته از بقیه از نظر الفبایی کوچکتر است.
دانشجویان به مناسبت روز استاد برای دکتر صباغ یک ساعت شنی هدیه خریدهاند. حال، این ساعت شنی را داریم که اگر همهی شنهای داخل آن کاملاً در سمت بالا باشد، دقیقه طول میکشد تا شنها به قسمت پایین منتقل شوند. ما این ساعت شنی را در لحظهی ۰ روی میز قرار دادیم و راس دقیقهی این ساعت شنی را روی میز بر میداریم. در لحظهی ۰ همهی شنها در قسمت بالایی ساعت قرار دارد.
همچنین لحظه از قبل به ما داده شده و میتوانیم در این لحظهها ساعت شنی را برعکس کنیم، یا هیچ تغییری ندهیم. (در بقیه لحظهها این کار ممکن نیست.) میخواهیم طوری این فرآیند را انجام دهیم که هیچ یک دقیقهی متوالی در این دقیقه پیش نیاید که ساعت شنی روی میز باشد و همهی شنهایش به قسمت پایین رفته باشد و حرکتی نکند (توجه کنید یک لحظه خالی شدن مهم نیست). از شما میخواهیم برنامهای بنویسید که بررسی کند آیا میتوانیم این کار را انجام دهیم یا خیر؟
برای بهتر متوجه شدن سوال، به توضیح نمونهها توجه کنید.
در سطر اول ورودی، عدد صحیح آمده که تعداد تستهای یک ورودی را نشان میدهد.
در سطر اول هر تست سه عدد صحیح ، و با فاصله از هم داده میشوند.
در سطر دوم هر تست عدد صحیح داده میشود.
برای هر تست، در صورتی که این کار شدنی است YES
و در غیر این صورت NO
چاپ کنید.
در تست اول، دقیقه طول میکشد تا ساعت شنی کاملاً خالی شود. ساعت شنی را در دقیقهی ۰ روی میز قرار میدهیم و در دقیقهی از روی میز بر میداریم. در دقیقههای و میتوانیم ساعت شنی را برعکس کنیم.
اگر در لحظهی برعکس کنیم هیچ وقت ساعت یک دقیقه متوالی بیحرکت نخواهد بود. چون از دقیقهی ۰ تا ۶ در حال خالی شدن است و درست در همان لحظه، ساعت برعکس میشود و در دقیقهی ۱۰، هنوز به اندازهی ۲ دقیقه شن دارد و هیچوقت ساعت از حرکت نیفتاده است.
در تست اول، دقیقه طول میکشد تا ساعت شنی کاملاً خالی شود. ساعت شنی را در دقیقهی ۰ روی میز قرار میدهیم و در دقیقهی از روی میز بر میداریم. در دقیقهی میتوانیم ساعت شنی را برعکس کنیم.
قبل از رسیدن به اولین زمان ممکن برای تغییر وضعیت ساعت، در بازهی دقیقهی ۱۰ تا ۱۱ ساعت شنی بیحرکت میماند. پس نمیتوانیم به هدفمان برسیم.
پروانه به شدت از دست بادکنک فروشی محل عصبانی است! وی قصد دارد تا برای درآوردن حرص طرف، بادکنکهای حاضر در بیرون مغازهاش را بترکاند! رنگ بادکنک ام است. پروانه در ابتدای هر روز همزمان بادکنکهای هر دسته از بادکنکهای پشت سر هم و هم رنگ که شامل حداقل ۳ بادکنک باشد میترکاند و در پایان هر روز بادکنکهای باقیمانده دوباره در یک ردیفِ پیوسته با همان ترتیب قرار میگیرند. میخواهیم بدانیم هر بادکنک در چه روزی میترکد.
در خط اول ورودی عدد آمده است که تعداد بادکنکها را نشان میدهد.
به ازای هر بادکنک روز ترکیدنش را چاپ کنید، اگر یک بادکنک هیچگاه نمیترکد -1
را چاپ کنید.
ایلان ماسک بعد از شکست در خرید توییتر وارد بازار کشت و فروش شلغم شد! امّا در این بین، علفهای هرز مانع کسب و کار او شدند. برای همین، شروع به حذف کردن علفهای هرز کرده است و از شما کمک میخواهد.
مزرعهٔ او به شکل جدولی است که دارای سطر با شمارههای تا از بالا به پایین و ستون با شمارههای تا از چپ به راست میباشد. در ابتدا علف هرز در مزرعه وجود دارد. او در هر مرحله میتواند یکی از عملیاتهای زیر را انجام دهد:
یک علف هرز از خانهٔ را با دست بکَنَد. در این صورت انرژی مصرف میکند. (برای خم شدن و کندن علف هرز)
پا روی خانهٔ بگذارد، در این صورت یکی از علفهای هرز موجود در آن خانه از بین رفته و یک علف هرز به خانهی و علف هرزی دیگر به خانهی اضافه میشود. توجه کنید که در این عملیات هیچ انرژیای از او کم نمیشود ( برابر با باقی مانده تقسیم بر است).
حال او وضعیت اولیهٔ مزرعه و علفهای هرز را به شما میدهد و از شما میخواهد که کمترین انرژی لازم برای از بین بردن تمامی علفهای هرز مزرعه را محاسبه کنید.
در خط اول دو عدد و و داده میشود.
در هر یک از سطر بعدی عدد آمده است که عدد ام در سطر ام مقدار را مشخص میکند.
در خط ام از خط بعدی دو عدد و آمده که نشان میدهد علف هرز ام در خانه است. دقت کنید ممکن است در ابتدا در یک خانه بیش از یک علف هرز وجود داشته باشد.
در یک خط عدد خواسته شده را چاپ کنید.
در ابتدا یک علف هرز در خانهٔ وجود دارد. ایلان روی آن پا گذاشته و در نتیجه در هر یک از خانههای و یک علف هرز بوجود میآید. سپس هر کدام از علفهای هرز جدید را با دست میکند و در مجموع ۲ واحد انرژی از دست میدهد.
در ابتدا دو علف هرز یکی در خانه و دیگری در خانه موجود است، ایلان با پا گذاشتن روی این دو علف آنها را به صورت ، ، و درمیآورد (توجه کنید دو علف هرز در خانه موجود است) سپس تمامی آنها را با دست میکند که در مجموع از او ۸ واحد انرژی میگیرد همچنین میتوان ثابت کرد این مقدار کمینه انرژی لازم است.
در دوران صدارت دکتر شهریور دانشجویان به شدت به عدد 28 اعتقاد داشتند تا جاییکه یک دوره کامل را به اسم این عدد دوره 1028یا گذاشته بودند. آنها دوره ۱۰۲۸ ایا، دوره ۲۸ ایا را بسیار خفن میپنداشتند(زیرا دوره ۲۸ ایا واقعا خفن بودند). اعتقاد دوره ۱۰۲۸ ایا به خفونت دوره ۲۸ ایا چنان بود که فکر میکردند دوره ۲۸ ایا میتوانستند حتی مساله توقف را حل کنند!
مساله توقف ( به انگلیسی : Halting problem ) مطرح می کند که آیا می توان برنامه ای نوشت که یک برنامه از ورودی بگیرد و تعیین کند که آیا برنامه متوقف می شود یا خیر. ثابت شده که در حالت کلی، الگوریتمی برای حل این مساله وجود ندارد.
مسئول دوره ۱۰۲۸ ایا برای اینکه اعتماد به نفس دوره ۱۰۲۸ ایا تقویت شود، نسخه ساده شدهای از مساله هالت را به آنها داد تا آنها فکر کنند مثل دوره ۲۸ ایا خفن هستند.
در این نسخه ساده شده سه نوع دستور موجود است:
که در آن و و یک حرف کوچک انگلیسی (که نام یک متغیر است) یا یک عدد یک رقمی هستند و شماره خطی از برنامه است. تضمین میشود که بعد از assign
متغیر a
همیشه یک حرف کوچک انگلیسی است.
شما باید خط به خط برنامه را دنبال کنید، در صورتی که برنامه پایانناپذیر است، را چاپ کنید. در غیر اینصورت خروجی این برنامه را چاپ کنید. در این برنامه cout
به معنای چاپ کردن یک عدد یا یک متغیر است. goto
به معنای پرش به یک خط خاص است (خطها از ۱ شمارهگذاری شدهاند). assign a = b + c
یعنی را در متغیر قرار بده. هر حرف کوچک انگلیسی نشاندهنده یک متغیر است و محتوای همه متغیرها در ابتدا صفر میباشد.
با توجه به اینکه جواب مسئله ممکن است بزرگ شود شما باید باقی مانده خروجی بر را بگویید.
در ورودی یک برنامه به شما داده میشود.
در خط اول تعداد خطهای برنامه و در خط بعد در هر خط یک دستور از برنامه داده میشود.
اگر برنامه دادهشده تمام نمیشود، در تنها سطر خروجی چاپ کنید.
در غیر اینصورت خروجیهای برنامه (به ازای هر cout
) را چاپ کنید.
پارسا چون خیلی بچه درس خونی است و به شدت به حل معماها علاقه دارد، سر کلاس اصلا حواسش به درس نبود و در حل معما فرو رفته بود. به همین خاطر، یادش رفت تمرین های فیزیکش را انجام دهد. او هم اکنون در سر کلاس فیزیکش است و چیزی از مساحت زیر نمودار نمی داند.
دکتر شریفی (معلم فیزیک پارسا) که از موضوع خبر دارد، برای تنبیه پارسا، هر ثانیه از ثانیه زنگ کلاس، یکی از دو کار زیر را انجام می دهد :
در واقع شما در هر ، ارتفاع نمودار در آن را برابر ماکسیمم خطوط در آن فرض کنید.
پارسا که چیزی از این ها بلد نیست، از شما (کناردستیاش) می خواهد به سرعت پاسخ ها را برای اون محاسبه کنید.
برای وضوح بیشتر به مثال ۲ مراجعه کنید.
در خط اول ورودی، عدد ، تعداد ثانیه های زنگ کلاس فیزیک می آید. در ادامه خط می آیند. خط ام، به یکی از دو صورت زیر است : که حالت اول نشان دهنده اضافه کردن خط توسط دکتر شریفی است و حالت دوم نشان دهنده یک پرسش از پارسا است.
به ازای هر پرسش از پارسا، در یک خط، مساحت زیر نمودار را چاپ کنید. اختلاف مطلق و نسبی شما با جواب درست نباید بیش از باشد. در واقع اگر جواب شما و جواب درست باشد، در صورتی جواب شما درست در نظر گرفته میشود که .
دقت کنید که گفته شده به حالت بسته - باز بر روی محور هاست. در نتیجه بازه ، شامل یک مثلث قائمه الزاویه به اضلاع قائمه خواهد بود که مساحت آن است. همچنین دقت کنید ممکن است این مقدار منفی هم باشد (در صورتی که تمام خط ها زیر محور ها بروند) همچنین اگر خطی کشیده نشده بود، مساحت زیر نمودار را ۰ در نظر بگیرید.
حسین ADHD شدید دارد و به همین خاطر دکتر به وی گفته تا به شهرهای مختلف سفر کند تا انرژی وی تخلیه شود. علاوه بر این، حسین هیستری جمعی دارد و به همین خاطر فقط میتواند از یک الگوی خاص در انتخاب مسیر خود پیروی کند. به حسین کمک کنید تا تمام زیر مجموعههایی که در مسیر مسافرتهای وی وجود دارند و از الگوی حسین پیروی میکنند را پیدا کند.
یک گراف اصلی و یک گراف الگو به شما داده میشود. حال شما میبایست تعداد زیر گرافهای موجود در گراف اصلی را پیدا کنید به طوری که این زیرگرافها مشابه گراف الگو باشند. (برای فهم بهتر مسئله به شکلهای پایین صفحه مراجعه کنید)
توجه کنید که سوال راهحل کامل ندارد و تستها به صورت رندوم ساخته شدند و برنامه شما هر چه بهتر باشد میتواند نمره بهتری دریافت کند.
خروجی تنها شامل یک عدد است که تعداد زیرگرافهای موجود از گراف اصلی (شبیه به گراف الگو) را نشان میدهد.
گراف اصلی نمونه ۱:
گراف الگو نمونه ۱:
با توجه به جدول زیر تعداد زیرگرافهای مشابه گراف الگو در گراف اصلی، ۵ تاست، بنابراین عدد ۵ در خروجی چاپ میشود.
راس A | راس B | راس C | |
---|---|---|---|
زیرگراف ۱ | راس ۱ | راس ۲ | راس ۳ |
زیرگراف ۲ | راس ۱ | راس ۲ | راس ۴ |
زیرگراف ۳ | راس ۱ | راس ۲ | راس ۵ |
زیرگراف ۴ | راس ۱ | راس ۵ | راس ۳ |
زیرگراف ۵ | راس ۱ | راس ۵ | راس ۴ |
گراف اصلی نمونه ۲:
گراف الگو نمونه ۲:
با توجه به جدول زیر تعداد زیرگرافهای مشابه گراف الگو در گراف اصلی، ۱۲ تاست، بنابراین عدد ۱۲ در خروجی چاپ میشود.
راس A | راس B | راس C | |
---|---|---|---|
زیرگراف ۱ | راس ۱ | راس ۲ | راس ۳ |
زیرگراف ۲ | راس ۱ | راس ۲ | راس ۴ |
زیرگراف ۳ | راس ۱ | راس ۲ | راس ۵ |
زیرگراف ۴ | راس ۱ | راس ۳ | راس ۲ |
زیرگراف ۵ | راس ۱ | راس ۳ | راس ۴ |
زیرگراف ۶ | راس ۱ | راس ۳ | راس ۵ |
زیرگراف ۷ | راس ۱ | راس ۴ | راس ۲ |
زیرگراف ۸ | راس ۱ | راس ۴ | راس ۳ |
زیرگراف ۹ | راس ۱ | راس ۴ | راس ۵ |
زیرگراف ۱۰ | راس ۱ | راس ۵ | راس ۲ |
زیرگراف ۱۱ | راس ۱ | راس ۵ | راس ۳ |
زیرگراف ۱۲ | راس ۱ | راس ۵ | راس ۴ |
گراف اصلی نمونه ۳:
گراف الگو نمونه ۳:
با توجه به جدول زیر تعداد زیرگرافهای مشابه گراف الگو در گراف اصلی، ۲ تاست، بنابراین عدد ۲ در خروجی چاپ میشود.
راس A | راس B | |
---|---|---|
زیرگراف ۱ | راس ۱ | راس ۲ |
زیرگراف ۲ | راس ۲ | راس ۱ |