تک‌رقمی


  • محدودیت زمان: ۰.۵ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

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

تک رقمی

ورودی🔗

در تنها سطر ورودی یک عدد nn می‌آید که نشان دهنده عددیست که باید آن‌ را تک رقمی کنید. 1n1018 1 \le n \le 10 ^{18}

خروجی🔗

در تنها خط خروجی باید عدد تک‌رقمی حاصل از تبدیل nn به یک عدد تک‌رقمی طبق روش مهدی چاپ شود.

مثال🔗

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

14
Plain text

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

5
Plain text

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

123456
Plain text

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

3
Plain text

در مرحله اول عدد 123456 تبدیل به عدد 6 + 5 + 4 + 3 + 2 + 1 = 21 می‌شود. در مرحله دوم عدد 21 تبدیل به عدد 1 + 2 = 3 می‌شود.

مساله هالت


  • محدودیت زمان: ۲ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

دوره ۱۰۲۸ ایا، دوره ۲۸ ایا را بسیار خفن می‌پنداشتند(زیرا دوره ۲۸ ایا واقعا خفن بودند). اعتقاد دوره ۱۰۲۸ ایا به خفونت دوره ۲۸ ایا چنان بود که فکر می‌کردند دوره ۲۸ ایا می‌توانستند حتی مساله توقف را حل کنند!

مساله توقف ( به انگلیسی : Halting problem ) مطرح می کند که آیا می توان برنامه ای نوشت که یک برنامه از ورودی بگیرد و تعیین کند که آیا برنامه متوقف می شود یا خیر. ثابت شده که در حالت کلی، الگوریتمی برای حل این مساله وجود ندارد.

مسئول دوره ۱۰۲۸ ایا برای اینکه اعتماد به نفس دوره ۱۰۲۸ ایا تقویت شود، نسخه ساده شده‌ای از مساله هالت را به آنها داد تا آنها فکر کنند مثل دوره ۲۸ ایا خفن هستند.

در این نسخه‌ ساده شده سه نوع دستور موجود است:

assign a = b + c
cout a
goto l
Plain text

که در آن aa و bb و cc یک حرف کوچک انگلیسی (که نام یک متغیر است) یا یک عدد یک رقمی هستند و ll شماره خطی از برنامه است. تضمین می‌شود که بعد از assign متغیر a همیشه یک حرف کوچک انگلیسی است.

شما باید خط به خط برنامه را دنبال کنید، در صورتی که برنامه پایان‌ناپذیر است، 1-1 را چاپ کنید. در غیر این‌صورت خروجی این برنامه را چاپ کنید. در این برنامه cout به معنای چاپ کردن یک عدد یا یک متغیر است. goto به معنای پرش به یک خط خاص است (خط‌ها از ۱ شماره‌گذاری شده‌اند). assign a = b + c یعنی b+cb+c را در متغیر aa قرار بده. هر حرف کوچک انگلیسی نشان‌دهنده یک متغیر است و محتوای همه‌ متغیرها در ابتدا صفر می‌باشد.

با توجه به اینکه جواب مسئله ممکن است بزرگ شود شما باید باقی مانده خروجی بر 109+710^9+7 را بگویید.

ورودی🔗

در ورودی یک برنامه به شما داده می‌شود.

در خط اول nn تعداد خط‌های برنامه و در nn خط بعد در هر خط یک دستور از برنامه داده می‌شود. 1ln100 0001 \le l \le n \le 100\ 000

خروجی🔗

اگر برنامه داده‌شده تمام نمی‌شود، در تنها سطر خروجی 1-1 چاپ کنید.

در غیر اینصورت خروجی‌های برنامه‌ (به ازای هر cout) را چاپ کنید.

مثال🔗

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

2
assign a = 2 + 2
cout a
Plain text

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

4
Plain text

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

4
assign a = 1 + 0
cout a
assign a = a + a
goto 2
Plain text

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

-1
Plain text

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

7
cout 0
goto 5
cout 1
goto 7
cout 2
goto 3
cout 3
Plain text

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

0
2
1
3
Plain text

آی مجری در سینما


  • محدودیت زمان: ۳ ثانیه
  • محدودیت حافظه: ۵۱۲ مگابایت

آی مجری که به فکر بچه‌ها است، تصمیم گرفته برای اولین بار آن‌ها را به سینما ببرد. آی مجری می‌داند که اگر یکی از بچه‌ها هنگام دیدن فیلم ناراحت باشد، فیلم را به کام همه تلخ خواهد‌کرد. به همین دلیل می‌خواهد همه راحت باشند. و اگر چنین چیزی امکان نداشت اصلا به سینما نروند. یکی از بچه‌‌ها ناراحت است اگر فردی جلوی او(نزدیک تر به پرده‌ی سینما و هم‌ستون با او) نشسته باشد و قدش از او بلندتر باشد. همچنین به دلیل این که آن‌ها خیلی خوش‌قلب هستند اگر بیننده‌ی دیگری غیر از آن‌ها هم نتواند فیلم را به خوبی ببیند(فرد بلندتری جلویش نشسته باشد)، ناراحت می‌شوند.

همه‌ی انسان‌ها در سه دسته‌ی قدی دسته‌بندی می‌شوند:

۱) انسان‌های کوتاه(تا ۱۹۰ سانتی‌متر)

۲) انسان‌های معمولی(۱۹۱-۱۹۸سانتی‌متر)

۳) انسان‌های بلند(۱۹۹ به بالا)

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

صندلی‌های سینما rr ردیف و cc ستون دارند که در ردیف آخر نزدیک ترین آدم‌ها به پرده‌ی سینما نشسته‌اند.

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

ورودی🔗

در سطر اول ورودی دو عدد طبیعی rr و cc آمده‌است، که به ترتیب نمایانگر تعداد ردیف‌ها و ستون‌های سینماست.

سپس در rr سطر بعدی در هر کدام cc کاراکتر آمده‌است که به این نحو معنی می‌شوند:

۱) جای خالی: #

۲) انسان کوتاه: s

۳)انسان معمولی: n

۴)انسان بلند: t

در سطر بعدی سه عدد طبیعی و کوچکتر از یک میلیون می‌آید که به ترتیب نشان‌دهنده‌ی تعداد بچه‌های کوتاه، معمولی و بلند است که آی مجری می‌خواهد با خود به سینما بیاورد. 1r,c10001 \le r, c \le 1000

خروجی🔗

اگر حالتی وجود نداشت، "Let's go to the park" را چاپ کنید. در غیر این صورت باید یک جدول مانند ورودی چاپ کنید که همه‌ی بچه‌ها نیز در جاهای خالی آن نشسته‌اند. اگر چند حالت وجود داشت،‌ به دلخواه یکی را چاپ کنید.

مثال🔗

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

3 3
###
#s#
n##
2 1 1
Plain text

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

t##
ns#
nss
Plain text

قبل از رسیدن آی مجری و بچه‌ها دو نفر با قد‌های کوتاه و متوسط روی صندلی‌ها نشسته‌اند. فرد با قد متوسط در نزدیک ترین فاصله به پرده نشسته‌است.

آی مجری ۴ نفر را با خود برده است. دو نفر با قد کوتاه، یک نفر با قد متوسط و یک نفر با قد بلند. یک حالت دلخواه از نشستن بچه‌ها را در خروجی می‌بینید.

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

4 4
####
##tn
nt#s
##t#
4 3 2
Plain text

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

Let's go to the park
Plain text

عدد چاپ‌کن


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۱۲۸ مگابایت

برنامه‌ای بنويسيد كه یک عدد صحيح را که تعداد ارقامش مشخص نيست از کاربر گرفته و هر رقم را به تعداد آن رقم چاپ کند.

ورودی🔗

در یک خط عدد به شما داده می‌شود. طول عدد از ۱۰۰ کوچکتر است.

خروجی🔗

به ازای هر رقم ابتدا خود آن رقم به همراه ‍: را چاپ کرده سپس به تعداد آن رقم از همان رقم چاپ کنید.

مثال🔗

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

50943
Plain text

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

5: 55555
0:
9: 999999999
4: 4444
3: 333
Plain text