کیک در کوئرا


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

در شرکت کوئرا ۳ کیک هم اندازه دایره‌ای برای تولد باقر خریداری شده است.

خانم عبادی می‌تواند یک کیک را:

  • به صورت کامل به ۱ نفر بدهد.
  • دو قسمت کند و به ۲ نفر بدهد.
  • چهار قسمت کند و به ۴ نفر بدهد.

توجه کنید خانم عبادی، برای هر کیک، دقیقاً یکی از این سه عملیات بالا را می‌تواند انجام دهد. برای مثال نمی‌توان یک نصفه کیک را مجدداً به دو قسمت برابر تقسیم کرد.

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

ورودی🔗

در تنها سطر ورودی عدد صحیح و مثبت nn داده می‌شود. 1n121 \leq n \leq 12

خروجی🔗

در تنها سطر خروجی در صورتی که چنین تقسیم کردنی ممکن است YES و در غیراینصورت NO را چاپ کنید.

توجه کنید سیستم داوری به بزرگ و کوچک بودن حروف حساس است.

مثال🔗

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

1
Plain text

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

YES
Plain text

هر سه کیک را به یک نفر می‌دهد. پس این کار شدنی است.

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

2
Plain text

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

YES
Plain text

کیک اول را به نفر اول و کیک دوم را به نفر دوم می‌دهیم. کیک سوم را هم نصف می‌کنیم و نیمی از آن را به نفر اول و نیم دیگر را به نفر دوم می‌دهیم.

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

3
Plain text

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

YES
Plain text

سه کیک داریم و به هر کدام یک کیک می‌دهیم.

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

11
Plain text

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

NO
Plain text

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

رشته در کوئرا


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

امیرحسین دستور ساخت یک رشته افسانه‌ای را پیدا کرده‌است. برای ساخت این رشته باید مقدار nn را انتخاب کنیم و رشته sns_n را به این روش تولید کنیم:

اگر n=1n = 1 آنگاه: sn="1"s_n = "1" اگر n>1n > 1 آنگاه: sn=sn1+"n"+sn1s_n = s_{n - 1} + "n" + s_{n - 1}

منظور از a+ba + b برای دو رشته aa و bb، یعنی رشته‌ای که از چسابندن aa در سمت چپ bb بدست می‌آید.

منظور از "n""n" نمایش عدد صحیح nn به صورت یک رشته است.

پس با توجه به تعریف بالا داریم: s1="1"s_1 = "1" s2="121"s_2 = "121" s3="1213121"s_3 = "1213121" ......

حال از شما می‌خواهیم مجموع ارقام نوشته شده در رشته‌ی sns_n را چاپ کنید. چون ممکن است این مقدار خیلی بزرگ باشد، باقی‌مانده آن را بر 109+710^9+7 محاسبه کنید.

ورودی🔗

در تنها سطر اول ورودی عدد صحیح nn آمده است. 1n1001 \leq n \leq 100

خروجی🔗

در تنها سطر خروجی باقی‌مانده مجموع ارقام نوشته شده در رشته‌ی sns_n، بر 109+710^9+7 را چاپ کنید.

مثال🔗

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

1
Plain text

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

1
Plain text

رشته s1="1"s_1 = "1" است پس مجموع ارقام آن برابر 11 است.

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

2
Plain text

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

4
Plain text

رشته s2="121"s_2 = "121" است پس مجموع ارقام آن برابر 1+2+1=41 + 2 + 1 = 4 است.

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

3
Plain text

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

11
Plain text

رشته s3="1213121"s_3 = "1213121" است پس مجموع ارقام آن برابر 1+2+1+3+1+2+1=111 + 2 + 1 + 3 + 1 + 2 + 1 = 11 است.

نامه‌ها در کوئرا


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

باقر می‌خواهد nn نامه برای mm شرکت مختلف بفرستد. نام این شرکت‌ها را با اعداد 1,2,,m1, 2, \dots, m \, نمایش می‌دهیم.

باید نامه‌ی اول به شرکت l1l_1، نامه دوم به شرکت l2l_2 و... نامه nnام به شرکت lnl_n ارسال شود. به عبارت دیگر نامه iiام (1in1 \leq i \leq n) باید به شرکت lil_i (1lim1 \leq l_i \leq m) ارسال شود.

باقر برای ارسال این نامه‌ها، nn پاکت تهیه می‌کند که روی پاکت iiام نشانی شرکت lil_i نوشته شده است.

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

به مهدی کمک کنید تا بررسی کند آیا انجام چنین کاری شدنی است یا نه.

ورودی🔗

در سطر اول ورودی دو عدد صحیح و مثبت nn و mm که با فاصله از هم جدا شده‌اند، داده می‌شود. 1mn1000001 \leq m \leq n \leq 100 \, 000 در سطر دوم ورودی nn عدد صحیح و مثبت l1,l2,,lnl_1, l_2, \dots, l_n \, که با فاصله از هم جدا شده است آمده و شرکت مقصد نامه iiام را نشان می‌دهد. 1lim1 \leq l_i \leq m

تضمین می‌شود که هر کدام از اعداد 1,2,,m1, 2, \dots, m \, حداقل یکبار در این دنباله ظاهر شده‌اند.

خروجی🔗

در تنها سطر خروجی در صورتی که می‌توان طوری نامه‌ها را در پاکت‌ها گذاشت به‌طوری که هیچ‌نامه‌ای به شرکت مربوط به خودش نرسد، YES و در غیر این صورت NO چاپ کنید.

توجه کنید سیستم داوری به بزرگ و کوچک بودن حروف حساس است.

مثال🔗

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

3 1
1 1 1
Plain text

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

NO
Plain text

همه نامه‌ها به شرکت ‍‍۱ است پس همه پاکت‌ها هم آدرس شرکت ۱ را دارند پس هر جایگشتی از نامه‌ها را که در پاکت‌ها قرار دهیم، همه نامه‌ها به شرکت ۱ می‌رسد و مهدی به هدفش نمی‌رسد.

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

4 4
4 1 2 3
Plain text

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

YES
Plain text

چهار نامه برای شرکت‌های ۱ و ۲ و ۳ و ۴ و چهار پاکت با آدرس شرکت‌های ۱ و ۲ و ۳ و ۴ داریم. نامه شرکت ۱ را در پاکت شرکت ۲ و نامه شرکت ۲ را در پاکت شرکت ۱ قرار می‌دهیم. همچنین نامه شرکت ۳ را در پاکت شرکت ۴ و نامه شرکت ۴ را در پاکت شرکت ۳ قرار می‌دهیم. به این ترتیب هیچ‌نامه‌ای به شرکت مربوط به خود نمی‌رسد و مهدی به هدفش می‌رسد.

شیفت در کوئرا


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

یک رشته از حروف کوچک انگلیسی به نام s=s1s2sns = s_1s_2\dots s_n \, داریم.

منظور از یک «شیفت ss» یعنی انتقال دادن kk حرف اول این رشته به آخر آن. (1kn 1 \leq k \leq n \,)

به عبارت دیگر یک شیفت ss، یک رشته به صورت زیر است:‌ sk+1sns1s2sks_{k + 1} \dots s_n s_1 s_2 \dots s_k

حال از شما می‌خواهیم با داشتن رشته ss، رشته‌ای از این nn شیفت را پیدا کنید که در ترتیب الفبایی کمینه باشد.

در ترتیب الفبایی، رشته aa از رشته bb کمتر است اگر اولین کاراکتر aa که با bb فرق دارد، در ترتیب الفبای انگلیسی زودتر آمده باشد.

ورودی🔗

در تنها سطر ورودی یک رشته از حروف کوچک انگلیسی مثل ss آمده است. 1s1000001 \leq |s| \leq 100 \, 000 منظور از s|s| طول رشته ss است.

خروجی🔗

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

مثال🔗

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

nima
Plain text

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

anim
Plain text

شیفت‌های nima عبارت است از iman، mani، anim و nima که رشته‌ای که در ترتیب الفبایی بین این ۴ رشته کوچک‌ترین است anim خواهد بود.

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

acabd
Plain text

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

abdac
Plain text

شیفت‌های acabd عبارت است از cabda، abdac، bdaca، dacab و acabd است که رشته‌ای که در ترتیب الفبایی بین این ۵ رشته کوچک‌ترین است abdac خواهد بود.

پرانتزگذاری در کوئرا


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

به یک رشته از ) و ( یک «پرانتزگذاری معتبر» می‌گوییم اگر برای هر پرانتز باز بتوان یک پرانتز بسته متناظر کرد به طوری که رشته بین این دو پرانتز تشکیل یک پرانتزگذاری معتبر دهد و با حذف این بازه رشته باقی‌مانده پرانتزگذاری معتبر باشد.

به یک پرانتز گذاری «kk-معتبر» می‌گوییم اگر با اضافه کردن kk پرانتز باز به ابتدای رشته و kk پرانتز بسته در انتهای آن، پرانتز گذاری معتبر شود.

تعداد رشته‌هایی را بیاید که طول آن 2n2n بوده و kk-معتبر باشد. چون تعداد این رشته خیلی زیاد است باقی‌مانده پاسخ مسئله را به 109+710^9 + 7 چاپ کنید.

ورودی🔗

در سطر اول ورودی عدد صحیح و مثبت tt داده می‌شود و در tt سطر بعدی هر کدام دو عدد nn و kk داده می شود. 1t1051 \le t \le 10^5 0k1060 \le k \le 10^6 1n1061 \le n \le 10^6

خروجی🔗

خروجی شامل tt سطر است که در هر سطر تعداد رشته های به طول 2n2n که kk-معتبر باشد را چاپ کنید.

مثال🔗

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

3
2 1
4 2
5 3
Plain text

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

5
62
242
Plain text