رمز و دستگرمی


رمزنگاری یکی از باحال ترین فیلدهای ریاضیه که همیشه تکنیک‌های مختلفش و حل کردنشون برای ریاضیدان‌ها جالب بوده.

پس چرا ما هم یه سوال برای دست گرمی نداشته باشیم؟ :))

هر موقع هم بحث رمزنگاری می‌شه, یه سری عدد می‌بینیم و قراره یه جوری از این عددا یه معنی دراریم. خب این دفعه هم همینه :))))

توی ورودی یه متن و یه سری عدد به شما داده می‌شه و شما باید از این متن و با این اعداد، یه کلیدی رو بدست بیارین. عددها به صورت حرف:کلمه وارد می‌شن و باید این حروف رو کنار هم بذارین و به عنوان خروجی چاپ کنین.

ورودی🔗

ورودی شامل دو خط هست که خط اول متن و خط دوم رمزمون هست.

خروجی🔗

خروجی باید کلمه کلید بدست اومده از ورودی با حروف بزرگ باشه.

*برای بهتر متوجه شدن مثال‌ها رو ببینین*

مثال🔗

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

Why are the people not dealing with their problems at this point?
1:3 2:1 4:5 6:1 10:1
Plain text

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

YALDA
Plain text

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

Hosting this contest was such a pleasure and it was so fun.
3:1 4:3 7:4 7:6 9:2
Plain text

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

CSAUT
Plain text

تعدادی عدد اول


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

آرین خیلی به اعداد اول علاقه داره. مخصوصا اعداد ۲ و ۳ و ۵. می‌خواد همه اعدادی که از ضرب این عددا به وجود میان رو پیدا کنه ولی این کار دستی خیلی سخته. پس باید یه راهی پیدا کنه که خیلی راحت و سریع nامین عدد از مجموعه اعداد بالا رو پیدا کنه. برای این کار به آرین کمک کن :)))

ورودی🔗

ورودی تنها شامل یک خط است که در آن عدد طبیعی nn آمده است. 1n16901 \le n \le 1690

خروجی🔗

خروجی برنامه شما، nامین عددی است که با شرایط بالا ساخته می‌شود.

مثال🔗

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

8
Plain text

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

9
Plain text

[1,2,3,4,5,6,8,9] [1, 2, 3, 4, 5, 6, 8, 9]

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

1
Plain text

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

1
Plain text

رستم هزاردستان


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

جوانه یک رشته‌ی باینری SS به طول nn دارد.

جوانه در هر حرکت می تواند یک زیر رشته به طول حداقل kk از رشته‌اش را در نظر گرفته و همه‌ی اعداد زیر رشته را برعکس کند. (یک‌ها را به صفر و صفرها را به یک تبدیل کند.)

بزرگ‌ترین kk ای را پیدا کنید که جوانه بتواند با عملیات بالا همه‌ی اعداد رشته را صفر کند.

ورودی🔗

در تنها خط ورودی رشته‌ی باینری SS داده شده‌است. 1S105 1 \le |S| \le 10^5

خروجی🔗

در تنها خط خروجی kk مورد نظر را چاپ کنید.

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

010
Plain text

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

2
Plain text

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

100000000
Plain text

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

8
Plain text

توپ بازی


رها و آرین دارن تو حیاط آکادمی یاسان با یه سری توپ، یه بازی با اعداد می‌کنن، شرح بازی: روی میز 2k توپ کنار هم چیده شده‌است که روی هر کدام وزن آن نوشته شده. در هر مرحله، هر نفر یا توپ اول یا توپ آخر را بر می‌دارد و داخل کیفش می‌گذارد. در آخر هر کسی که جمع وزن توپ‌هایش بیشتر بود برنده است. رها شروع کننده بازی است. وزن توپ‌ها را به عنوان ورودی به شما می‌دهیم. برای وزن‌های داده شده چه کسی می‌تواند کاری کند که بازنده نباشد؟

ورودی🔗

ورودی شامل دو خط است که در خط اول n تعداد توپ‌ها و در خط بعد وزن توپ‌ها با فاصله به شما داده می‌شود.

خروجی🔗

نام بازیکنی که می‌تواند در هر بازی کاری کند که نبازد را به عنوان خروجی چاپ کنید. اگر رها بود RAHA و اگر آرین بود ARIAN.

مثال🔗

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

8
1 2 4 5 6 7 3 6
Plain text

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

RAHA
Plain text

اسم شرکت


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

این روزها آرین و رها درحال راه‌اندازی شرکتی نوپا هستند. امّا مثل همیشه اختلاف نظر پیدا کرده‌اند، این بار بر سر نامِ شرکت. اشکان به آن‌ها پیشنهاد می‌دهد بازی‌ای انجام دهند و نتیجه‌ی بازی اسم شرکت باشد.

قبل از شروع بازی اشکان یک رشته‌ی nn حرفی به آرین و یک رشته‌ی nn حرفی به رها می‌دهد. آرین شروع کننده‌ی بازی است و در ابتدا نام شرکت به صورت nn تا جای‌خالی در نظر گرفته شده.(آرین و رها از رشته های یکدیگر مطلع هستند.)

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

از نظر آرین اسمی ایده آل است که از نظر الفبایی تا حدّامکان کوچک باشد و از نظر رها اسم ایده آل از نظر الفبایی تا حدّ امکان بزرگ است.

اگر هردوی آن‌ها بهترین بازی خود را انجام دهند, نام شرکت چه خواهد بود؟

ورودی🔗

ورودی دارای دو خط است که در هر خط رشته‌ای از حروف کوچک انگلیسی به طول nn قرار دارد.

خط اول رشته‌ای که اشکان به آرین داده است و خط دوم رشته‌‌ای که اشکان به رها داده. 1n1051 \leq n \leq 10^5

خروجی🔗

در خروجی رشته‌ای به طول nn خواسته‌ می‌شود که اسم نهایی شرکت است.

مثال🔗

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

tinkoff
zscoder
Plain text

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

fzfsirk
Plain text

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

xxxxxx
xxxxxx
Plain text

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

xxxxxx
Plain text

صف مهمانی آرین


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

آرین برای یلدا یه مهمونی بزرگ گرفته و تمام دوستاش رو دعوت کرده. دوستای آرین هیچ خوراکی دیگری را به اندازه‌ی آب نبات دوست ندارند!

صبح امروز آرین mm آب نبات (1m105)(1 \le m \le 10^5) با طعم و شرکت‌های مختلف خرید. متاسفانه آرین از هر طعم مختلف فقط یک عدد آب نبات خریده است. هر یک از nn دوست آرین (1n105)(1 \le n \le 10^5) ، یک طعم از آب نبات را دوست دارد و یک طعم دیگر را نیز بدش نمی‌آید و بقیه‌ی طعم‌ها را دوست ندارد. وقتی نوبت به یک شخص می‌رسد تا آب نباتش را بردارد، یکی از ۳ اتفاق زیر ممکن است بیفتد:

  1. اگر آب نباتی که دوست دارد موجود باشد، آن را برمی‌دارد و خوشحال صحنه را ترک می‌کند و به رقصش می‌پردازد.
  2. در غیر این صورت، اگر آب نباتی که بدش نمی‌آید موجود باشد، آن را برمی‌دارد و خوشحال صحنه را ترک می‌کند و باز هم به صحنه رقص می‌رود.
  3. در غیر این صورت، آب نباتی برنمی‌دارد و ناراحت مهمانی را ترک می‌کند.

مهمان‌ها در صف ایستاده‌اند تا آب نبات بردارند. به ازای تمامی iiهای 0in1 0 \le i \le n-1 ، حساب کنید چند مهمان خوشحال صحنه را ترک می‌کنند اگر آرین ii مهمان اول صف را از صف بیرون بیندازد.

ورودی🔗

در خط اول، دو عدد طبیعی nn و mm به ترتیب آمده‌اند.
در هر یک از nn خط بعدی دو عدد طبیعی fif_i و sis_i آمده‌اند (1si,fim)(1 \le s_i, f_i\le m) که به ترتیب نمایانگر آب نبات مورد علاقه‌ی مهمان iiاُم و آب نباتی که مهمان iiاُم از آن بدش نمی‌آید هستند.

خروجی🔗

در nn خط، جواب را به ازای تمامی 0in1 0 \le i \le n-1 چاپ کنید.

زیرمسئله‌ها🔗

زیرمسئله نمره محدودیت‌ها
۱ ۳۰ n,m1000n, m \le 1000
۲ ۷۰ بدون محدودیت اضافی

مثال‌ها🔗

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

4 2
1 2
1 2
1 2
1 2
Plain text

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

2
2
2
1
Plain text

جشن عروسی


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

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

گیلان شامل nn شهر است و بعضی از شهرها با یک جاده به هم متصل می‌شوند به طوری که بین هر دو شهر دقیقاً یک مسیر وجود دارد. (به عبارت دیگر گراف گیلان یک درخت است.)

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

محمد برای محاسبه‌ی تعداد شهرهایی که می‌توانند آنجا جشن بگیرند از شما کمک خواسته است.

شاید براتون جالب باشه محمد عاشق چایی شده و اینا همه توهمه و در اصل عروسی سبحان در شهر وازوسکیه

ورودی🔗

*توجّه:* برای آسانی، گراف گیلان به صورت یک درخت ریشه‌دار شده از راس شماره‌ی ۱ در ورودی داده می‌شود.

در خط اول ورودی، nn تعداد شهرهای گیلان آمده است. پس از آن در خط ii (2in2 \leq i \leq n) یک عدد داده می‌شود که پدر (Parent) رأس ii در گراف گیلان است.

در خط بعد عدد mm تعداد پرسش‌ها آمده‌است. سپس در خط ii اُم از mm خط بعد، دو عدد طبیعی aia_i و bib_i آمده‌ است. 1u,v,ai,bin100 000,1m100 0001 \leq u, v, a_i, b_i\le n \le 100\ 000 \quad , \quad 1 \leq m \le 100\ 000

خروجی🔗

خروجی شامل mm خط است که باید در خط ii اُم تعداد شهرهایی که فاصله‌ی آن‌ها از دو شهر aia_i و bib_i برابر است را چاپ کنید.

مثال🔗

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

5
1
2
2
4
3
1 2
2 2
1 3
Plain text

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

0
5
3
Plain text

ashkanfilmer@


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

اشکان فیلمر یک جدول از فیلم‌های دیده شده و دیده نشده‌اش ‌n×mn \times m دارد که روی هر خانه‌ی آن ۰ یا ۱ برای فیلم‌های دیده نشده و دیده شده‌اش نوشته شده است. تعداد خانه‌های بزرگ‌ترین زیرمستطیلی از جدول فیلم‌های اشکان فیلمر را پیدا کنید که تمام خانه‌های آن ۰ باشد.

ورودی🔗

در خط اول ورودی دو عدد طبیعی nn و mm (1n,m1000)(1 \le n, m \le 1000) به ترتیب می‌آید.
در هر یک از nn خط بعدی، mm عدد ۰ یا ۱ می‌آیند.

خروجی🔗

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

مثال🔗

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

3 5
1 0 1 1 0
0 0 0 1 1
1 0 0 1 0
Plain text

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

4
Plain text

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

4 4
1 1 0 0
1 1 0 0
0 0 0 0
1 1 0 1
Plain text

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

6
Plain text

الو رها؟


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

رها یک آرایه‌ی nn عضوی به‌ نام AA از اعداد مختلف دارد. او می‌خواهد در آرایه‌ی BB که به صورت زیر تعریف می‌شود، یک کوه سیاه پیدا کند. Bi=(1jn,jiAj) mod AiB_i = (\prod_{1 \leq j \leq n , j \neq i} A_j)\ mod\ A_i

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

ورودی🔗

در خط اوّل ورودی عدد طبیعی nn، تعداد اعضای آرایه‌ی AA آمده‌است.

سپس در خط بعد nn عدد طبیعی متفاوت A1,A2,,An A_1, A_2, \dots, A_n\ داده می‌شود. 2n106,1Ai2×1092 \le n \le 10^6 \quad , \quad 1 \le A_i \le 2\times 10^9

خروجی🔗

در تنها خط خروجی یک عدد ii چاپ کنید به طوری که BiB_i یکی از کوه‌های سیاه آرایه‌ی BB باشد. در صورتی که BB چند کوه سیاه داشت، شماره‌ی یکی از کوه‌های سیاه را به دل‌خواه چاپ کنید.

مثال🔗

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

3
16 15 77
Plain text

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

3
Plain text

داریم: B=3,2,9B = 3, 2, 9 که در آن خانه‌های شماره‌ی 11 و 33 کوه سیاه هستند.

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

5
1 3 4 100 10
Plain text

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

2
Plain text

داریم: B=0,1,0,20,0B = 0, 1, 0, 20, 0 که در آن خانه‌های شماره‌ی 22 و 44 کوه سیاه هستند.

ریاضی ساده است


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

رها متوجه شده که وضع آرین نه تنها در درس جغرافی خوب نیست (بعد از ۱۰ سال در شهرک غرب بدون نقشه گم میشه)، بلکه در ریاضی هم تعریفی ندارد‌‌‌‌؛ برای همین یک سوال طرح کرده که آرین باید آن را حل کند.

رها یک معادله‌ی درست و خیلی ساده، مشابه زیر انتخاب کرده: a+b=ca+b=c که در آن aa، bb و cc سه عدد صحیح و نامنفی هستند و هیچ صفر اضافه‌ای در سمت چپ این سه عدد وجود ندارد.

سپس علامت جمع و تساوی را از معادله حذف کرده و حاصل که به شکل زیر است را در اختیار آرین قرار داده است: abcabc

رها از آرین خواسته که مکان علامت‌های ++ و == را پیدا کند ولی چون این کار اصلاً ساده به نظر نمی‌رسد شما باید به آرین کمک کنید.

ورودی🔗

تنها خط ورودی شامل یک رشته‌ی abcabc از ارقام 00 تا 99 است که طول آن از 10610^6 تجاوز نخواهد کرد.

خروجی🔗

در تنها خط خروجی سه عدد چاپ کنید که به ترتیب طول aa، bb و cc هستند. در صورتی که مسئله چند پاسخ ممکن داشت، یک پاسخ را به دلخواه خروجی دهید.

مثال🔗

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

12345168
Plain text

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

3 2 3
Plain text

*توضیح نمونه ١:* معادله‌ی 123+45=168123+45=168 معتبر است که در آن طول aa برابر ٣، طول bb برابر ٢ و طول cc برابر ٣ می‌باشد.

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

099
Plain text

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

1 1 1
Plain text

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

199100
Plain text

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

1 2 3
Plain text

ترم ۵ در ترم ۳


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

رها این ترم نمیدونه چرا مبانی منطق و نظریه مجموعه ها برداشته و هیچ ایده ای نداره چه طوری با مجموعه ها کار کنه؟

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

  1. به ازای ورودی xx: xx را به مجموعه اضافه کن.
  2. به ازای ورودی xx: به ازای هر عضو مجموعه مانند yy قرار بده y=yxy=y \oplus x. (اطلاعات بیشتر)
  3. بزرگترین عنصر مجموعه را چاپ کن.

ورودی🔗

در اولین خط ورودی qq آمده است که تعداد عملیاتی است که باید روی مجموعه اجرا شود. در qq خط بعد، در هر خط یک عملیات داده می‌شود که به یکی از سه شکل زیر است:

  • 1 x1\ x
  • 2 x2\ x
  • 33

1n500 000,0x1091 \le n \le 500\ 000 \quad , \quad 0 \le x \le 10^9

خروجی🔗

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

مثال🔗

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

10
3
1 7
3
2 4
2 8
2 3
1 10
1 3
3
2 1
Plain text

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

0
7
15
Plain text

بازسازی گراف


  • محدودیت زمان: 10 ثانیه
  • محدودیت حافظه: 50 مگابایت

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

به عنوان مثال فرض کنید:

در این مثال از راس 0 به راس 1 با یال A و از راس 1 به راس 2 با یال B میرود. با توجه به قانون داده شده به ازای هر AB قرار است C نمایش بدهد پس از 0 به 2 یک C اضافه میکند و در ادامه از 0 به 2 با C میرود و از 2 به 3 با B میرود و در نتیجه طبق قانون از 0 به 3 یال A اضافه میشود. این کار را تا زمانی که دیگر یالی اضافه نشود، تکرار میکنیم.

توضیح تصویر

فرض کنین مجموعه قوانین داده شده به این صورت است که هر دو یال n و e که در یک پیمایش به صورت ne باشد. یعنی: n->ne

ورودی🔗

در سطر اول گراف تعداد راس ها (n) را میبینید. و در سطرهای بعدی به ترتیب ابتدا شماره راس مبدا (A)، شماره راس مقصد (B) و با وزن یال از A به B

1A,B,n400001 \le A, B, n \le 40000

خروجی🔗

در خروجی فقط تعداد یال‌های اضافه شده در انتها بنویسید.

مثال🔗

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

25
0  1  e
2  3  e
4  5  e
6  7  e
8  9  e
10 11 e
12 4  e
13 14 e
9  15 e
16 8  n
7  17 e
18 19 e
20 6  e
21 22 e
11 17 e
-1
Plain text

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

2
Plain text