سیبل تیراندازی


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

یک تیر به سمت «سیبل تیراندازی» زیر پرتاب شده و امتیاز pp را دریافت کرده است.

توضیح تصویر

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

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

ورودی🔗

در تنها سطر ورودی عدد صحیح pp آمده که نشان‌دهنده امتیاز دریافت شده است. 0p100 \leq p \leq 10

خروجی🔗

در تنها سطر خروجی، در صورتی که

  • تیر خارج از «سیبل تیراندازی» باشد عبارت out
  • تیر داخل «سیبل تیراندازی» باشد و ناحیه برخورد، سفید رنگ باشد عبارت white
  • تیر داخل «سیبل تیراندازی» باشد و ناحیه برخورد، سیاه رنگ باشد عبارت black

را چاپ کنید.

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

مثال🔗

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

10
Plain text

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

black
Plain text

توضیح تصویر

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

3
Plain text

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

white
Plain text

توضیح تصویر

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

7
Plain text

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

black
Plain text

توضیح تصویر

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

0
Plain text

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

out
Plain text

توضیح تصویر

حقوق سعید


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

سعید nn ماه است که در کوئرا کار می‌کند. حقوق او در ماه iiام (1in1 \leq i \leq n) برابر sis_i بوده است. او یک شرایط سخت برای ادامه همکاری خود با کوئرا دارد و می‌خواهد از این به بعد، حقوق هر ماه او برابر مجموع حقوق ماه‌های قبلی باشد.

به عبارت دیگر:

  • حقوق ماه n+1n + 1ام یا همان sn+1s_{n+1} برابر s1+s2++sns_1 + s_2 + \dots + s_n \,
  • حقوق ماه n+2n + 2ام یا همان sn+2s_{n+2} برابر s1+s2++sn+1s_1 + s_2 + \dots + s_{n+1} \,
  • حقوق ماه n+3n + 3ام یا همان sn+3s_{n+3} برابر s1+s2++sn+2s_1 + s_2 + \dots + s_{n+2} \,
  • و...

حال از شما qq سوال می‌پرسیم. در سوال jjام از شما می‌خواهیم میزان حقوق دریافتی این شخص در ماه kjk_jام (یا همان skjs_{k_j}) را محاسبه کنید.

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

ورودی🔗

در سطر اول ورودی به ترتیب دو عدد صحیح و مثبت nn و qq آمده است که به ترتیب نشان‌دهنده‌ی تعداد ماه‌هایی است که سعید تا کنون حقوق گرفته و تعداد سوالاتی که پرسیده خواهد شد. 1n,q1001 \leq n, q \leq 100 در سطر دوم ورودی nn عدد صحیح و مثبت s1,s2,,sns_1, s_2, \dots, s_n آمده است که حقوق‌های دریافتی سعید در این nn ماه را نشان می‌دهد. 1ai1001 \leq a_i \leq 100 در qq سطر بعدی در هر سطر یک عدد صحیح و مثبت kjk_j آمده است که یعنی حقوق دریافتی این شخص در ماه kjk_jام را به پیمانه 109+710^9 + 7 محاسبه کنید. n+1kj1000 000 000n + 1 \leq k_j \leq 1000 \ 000 \ 000

خروجی🔗

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

مثال🔗

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

3 2
1 2 3
4
5
Plain text

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

6
12
Plain text

حقوق ماه ۴ام او ۶ و حقوق ماه ۵ام برابر ۱۲ است.

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

5 1
1 1 1 1 1
1401
Plain text

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

349521860
Plain text

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

انتساب آرایه


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

یک آرایه به طول nn از اعداد صحیح مثل a1,,ana_1, \dots, a_n‌ داریم.

برای مثال این آرایه به طول ۳ و به شکل [7,5,5][7, 5, 5] باشد.

در هر عملیات می‌توانیم دو عدد صحیح و مثبت مثل ii و jj که 1i,jn1 \leq i, j \leq n باشد را انتخاب کنیم و مقدار aia_i را به aja_j تبدیل کنیم. به عبارت دیگر می‌توانیم دستور ai=aja_i = a_j را اجرا کنیم.

برای مثال در آرایه بالا می‌توانیم مقدار ii را برابر ۱ و jj را برابر ۳ انتخاب کنیم و عملیات گفته شده یعنی مقدار a1a_1 را حذف و مقدار a3a_3 را به‌جای آن بنویسیم. یعنی آرایه اولیه به [7,5,7][7, 5, 7] تبدیل می‌شود.

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

بررسی کنید آیا رسیدن از آرایه aa به آرایه bb با انجام دادن تعداد دلخواهی از عملیات بالا شدنی است یا خیر.

ورودی🔗

در سطر اول ورودی عدد صحیح و مثبت tt آمده که تعداد تست‌هایی که در یک ورودی آمده را نشان می‌دهد. 1t100 0001 \leq t \leq 100 \ 000

در سطر اول هر تست، عدد صحیح و مثبت nn آمده که طول دو آرایه aa و bb را نشان می‌دهد. 1n100 0001 \leq n \leq 100 \ 000

در سطر دوم هر تست، nn عدد صحیح و مثبت a1,a2,,ana_1, a_2, \dots, a_n که با یک فاصله از هم جدا شده‌اند، آمده است.

در سطر سوم هر تست، nn عدد صحیح و مثبت b1,b2,,bnb_1, b_2, \dots, b_n که با یک فاصله از هم جدا شده‌اند، آمده است. 1ai,bi1091 \leq a_i, b_i \leq 10^9

تضمین می‌شود مجموع nnها به ازای همه tt در یک ورودی، از ۱۰۰،۰۰۰ بیشتر نمی‌شود.

خروجی🔗

به ازای هر تست در صورتی که می‌توان از آرایه aa به آرایه bb با عملیات تعریف شده رسید YES و در غیر این‌صورت NO را در یک سطر جداگانه چاپ کنید.

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

مثال🔗

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

3
3
7 5 5
7 5 7
4
1 2 3 4
1 1 1 3
1
9
11
Plain text

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

YES
YES
NO
Plain text

تست اول🔗

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

تست دوم🔗

برای تبدیل آرایه aa به bb می‌توانیم عملیات‌ها را به ترتیب و به صورت زیر انجام دهیم.

عملیات اول. مقدار ii برابر ۲ و مقدار jj برابر ۱ باشد. با قرار دادن a1a_1 به جای a2a_2 آرایه به صورت زیر خواهد شد. [1,1,3,4][1, 1, 3, 4] عملیات دوم. مقدار ii برابر ۴ و مقدار jj برابر ۳ باشد. با قرار دادن a3a_3 به جای a4a_4 آرایه به صورت زیر خواهد شد. [1,1,3,3][1, 1, 3, 3] عملیات سوم. مقدار ii برابر ۳ و مقدار jj برابر ۱ باشد. با قرار دادن a1a_1 به جای a3a_3 آرایه به صورت زیر خواهد شد. [1,1,1,3][1, 1, 1, 3] پس با این آرایه از عملیات رسیدن به وضعیت آرایه bb شدنی است.

تست سوم🔗

انجام دادن عملیات، هیچ تغییری در آرایه aa ایجاد نمی‌کند، بنابراین رسیدن به آرایه bb شدنی نیست.

عددگذاری گراف


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

یک گراف ساده و همبند nn راسی و mm یالی داریم. می‌خواهیم روی هر راس این گراف یک عدد از مجموعه {1,2,3,,k}\{ 1, 2, 3, \dots, k\} بنویسیم.

اگر عدد نوشته شده روی راس vv را با ava_v و طول کوتاه ترین مسیر بین دو راس uu و vv را با dist(u,v)dist(u, v) نشان دهیم.

می‌خواهیم این عدد گذاری به گونه‌ای انجام شود که برای هر دو راس از این گراف مثل uu و vv داشته باشیم.

dist(u,v)=auavdist(u, v) = |a_u - a_v|

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

ورودی🔗

خط اول ورودی به ترتیب سه عدد nn و mm و kk با فاصله از هم آمده‌اند.

1n100 0001 \le n \le 100\ 000 n1mmin(n(n1)2,100000)n - 1 \leq m \leq min(\frac{n(n - 1)}{2},100 \, 000) 1k1091 \le k \le 10^9

در mm خط بعدی و در هر خط دو عدد vv و uu با فاصله از هم آمده‌اند که نشان‌دهنده‌ی یالی بین دو رأس vv و uu هستند. 1v,un1 \le v, u \le n

تضمین می‌شود گراف ورودی، گرافی ساده و همبند است.

خروجی🔗

مثال🔗

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

2 1 3
1 2
Plain text

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

4
Plain text

اگر عدد نوشته شده روی راس شماره vv را با c(v)c(v) نشان دهیم؛ ۴ روش زیر برای این عدد گذاری وجود دارد.

  • c(1)=1,c(2)=2c(1) = 1, c(2) = 2
  • c(1)=2,c(2)=1c(1) = 2, c(2) = 1
  • c(1)=3,c(2)=2c(1) = 3, c(2) = 2
  • c(1)=2,c(2)=3c(1) = 2, c(2) = 3

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

3 3 2
1 2
2 3
3 1
Plain text

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

0
Plain text

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

دنباله دلخواه


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

عدد صحیح و مثبت nn به شما داده می‌شود.

از شما می‌خواهیم یک دنباله از اعداد صحیح مثبت، مثل a1,a2,,a2na_1, a_2, \dots, a_{2n} \, چاپ کنید که هر همه شرایط زیر را داشته باشد.

  • هر دو عدد متوالی در این دنباله مثل aia_i و ai+1a_{i+1} نباید نسبت به هم اول باشند. (یعنی باید عامل مشترک بزرگ‌تر از ۱ داشته باشند.)
  • همه اعداد 22 تا nn در این دنباله آمده باشد.
  • همه اعداد این دنباله باید متمایز باشد.

در این سوال جواب مسئله لزوما یکتا نیست و شما هر دنباله‌ای که دلتان می‌خواهد (که شرایط فوق را دارد) می‌توانید چاپ کنید.

درصورتی که دنباله شما شرایط فوق را داشته باشد نمره کامل را دریافت خواهید کرد.

ورودی🔗

هر ورودی شامل tt تست است؛ در هر کدام از tt سطر بعدی، در سطر iiام یک عدد صحیح و مثبت nn آمده که شما باید پاسخ مسئله را به ازای این تست چاپ کنید. 1t1001 \leq t \leq 100 2n10000 2 \leq n \leq 10000

تضمین می‌شود مجموع nnها در همه‌ی tt تست از ۱۰۰،۰۰۰ بیشتر نشود.

خروجی🔗

خروجی شامل tt سطر است و در سطر iiام آن دنباله مورد نظر تست iiام را باید چاپ کنید که شامل 2n2n عدد صحیح و مثبت a1,a2,,a2na_1, a_2, \dots, a_{2n} که با یک فاصله از هم جدا شده‌اند را چاپ کنید.

در دنباله‌ای که چاپ می‌کنید نباید اعداد از یک میلیارد بیشتر یا مساوی شوند. 1ai<1091 \leq a_i < 10^9

مثال🔗

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

3
4
2
3
Plain text

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

2 4 8 16 32 64 12 3
24 2 4 6
3 6 2 1402 2022 702
Plain text

توجه کنید ممکن است خروجی برنامه شما برای این نمونه متفاوت باشد اما بازهم پاسخ درستی به مسئله داده باشید.

دنباله غریب


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

دنباله {fn}\{f_n\} به این صورت ساخته می‌شود:

اگر n=1n = 1 باشد: fn=1f_{n} = 1 اگر n>1n > 1 باشد: fn=gcd(fn1,n)+n2f_{n} = gcd(f_{n - 1}, n) + n^2

منظور از gcd(a,b)gcd(a, b) یعنی بزرگ‌ترین مقسوم‌علیه مشترک aa و bb است.

از شما می‌خواهیم به ازای tt مقدار مختلف برای nn مقدار fnf_{n} را پیدا کنید.

ورودی🔗

در سطر اول ورودی عدد صحیح و مثبت tt آمده است.

1t10000001 \le t \le 1\,000\,000

در tt سطر بعدی، در هر سطر یک عدد صحیح و مثبت nn داده می‌شود.

1n1000 000 0001 \le n \le 1000 \ 000 \ 000

خروجی🔗

خروجی شامل tt سطر است که در سطر nnام آن مقدار ff به ازای عدد iiام داده شده در ورودی را چاپ کنید.

مثال🔗

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

5
1
2
3
4
5
Plain text

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

1
5
10
18
26
Plain text
  • f(1)=1f(1) = 1
  • f(2)=gcd(f(1),2)+22=gcd(1,2)+4=1+4=5f(2) = gcd(f(1), 2) + 2^2 = gcd(1, 2) + 4 = 1 + 4 = 5
  • f(3)=gcd(f(2),3)+32=gcd(5,3)+9=1+9=10f(3) = gcd(f(2), 3) + 3^2 = gcd(5, 3) + 9 = 1 + 9 = 10
  • f(4)=gcd(f(3),4)+42=gcd(10,4)+16=2+16=18f(4) = gcd(f(3), 4) + 4^2 = gcd(10, 4) + 16 = 2 + 16 = 18
  • f(5)=gcd(f(4),5)+52=gcd(18,5)+25=1+25=26f(5) = gcd(f(4), 5) + 5^2 = gcd(18, 5) + 25 = 1 + 25 = 26

لامپ‌ها در جدول


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

یک جدول n×mn \times m داریم. این جدول شامل nn سطر و mm ستون است که به ترتیب از بالا به پایین از ۱ تا nn و از چپ به راست از ۱ تا mm شماره گذاری شده است. در هر خانه از این جدول یک لامپ خاموش قرار دارد.

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

از شما می‌خواهیم با انجام دادن حداکثر n×mn \times m عملیات وضعیت همه لامپ‌ها را به روشن تبدیل کنید.

ورودی🔗

در تنها سطر ورودی دو عدد صحیح و مثبت nn و mm که با فاصله از هم جدا شده‌اند آمده است. 1n,m10001 \leq n, m \leq 1000

تضمین می‌شود همواره راهی برای رسیدن به این هدف وجود دارد.

خروجی🔗

در سطر اول خروجی عدد صحیح kk را چاپ کنید که تعداد عملیات‌های مورد نیاز شما را نشان می‌دهد. 0kn×m0 \leq k \leq n \times m در kk سطر بعدی، در سطر iiام، دو عدد صحیح و مثبت rir_i و cic_i را که با یک فاصله از هم جدا شده‌اند چاپ کنید که به ترتیب نشان‌دهنده‌ی سطر و ستون لامپی است که روی آن عملیات انجام داده‌اید.

1rin1 \leq r_i \leq n 1cim1 \leq c_i \leq m

مثال🔗

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

1 2
Plain text

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

1
1 1
Plain text

با همین یک عملیات هر دو لامپ روشن می‌شوند چون هر دو خاموش هستند.

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

2 2
Plain text

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

4
1 1
1 2
2 1
2 2
Plain text

اگر روی هر لامپ یک عملیات انجام دهیم هر لامپ سه بار تغییر وضعیت می‌دهد پس در نهایت همه لامپ‌ها روشن می‌شوند.