خواب پوپک


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

پوپک از خواب بیدار می‌شود... به یاد می‌آورد که خوابی دیده است اما جزییات این خواب در خاطرش نیست...

پوپک می‌داند که او در خوابش دو کیسه تیله داشته است که در هر کیسه حداقل یک تیله بوده است. پوپک می‌داند که تعداد تیله‌های کیسه اول مقسوم‌علیهی از عدد aa بوده و تعداد تیله‌های کیسه دوم مقسوم علیهی از عدد bb بوده است. همچنین پوپک به یاد دارد که دو کیسه‌اش خیلی سنگین نبودند و در مجموع حداکثر xx تیله در دو کیسه قرار داشته است.

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

در همین هنگام توک یه دل نه صد دل عاشق پوپک می‌شود ...

ورودی🔗

در تنها خط ورودی به ترتیب سه عدد aa و bb و xx آمده است.

1a,b1 0001 \le a, b\le 1\ 000 2x1 0002 \le x \le 1\ 000

خروجی🔗

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

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

2 2 2
Plain text

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

1
Plain text

تنها حالت ممکن این است که در هر دو کیسه دقیقا 11 تیله قرار گرفته باشد.

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

7 7 14
Plain text

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

4
Plain text

چهار حالت مختلف برای تعداد تیله‌های در کیسه (1,1)(1, 1) و (1,7)(1, 7) و (7,1)(7, 1) و (7,7)(7 , 7) هستند.

کادوی پوپک‌پسند


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

توک به مناسبت ولنتاین میخواهد هدیه زیبایی به پوپک بدهد ...

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

او می تواند رشته‌اش را به aa رشته با طول برابر افراز کند (که بالطبع طول این رشته‌ها na\frac{n} a خواهد بود) و در نهایت andand بیتی این aa رشته را به عنوان کادو به پوپک بدهد.

هر چه عدد متناظر با رشته باینری‌ای که توک به پوپک می دهد بیشتر باشد، پوپک شادتر می شود. بهترین رشته‌ای که توک به پوپک باید هدیه بدهد (یعنی رشته‌ای که عدد متناظر با آن بیشینه است) را بدون صفر در پشت رشته (leading zeroes) چاپ کنید .

برای مثال اگر رشته توک 110101110101 باشد، توک با انتخاب a=3a=3 ، آن را به سه رشته 11,01,0111, 01, 01 تقسیم می‌کند که andand بیتی این رشته برابر 0101 است پس رشته‌ای که توک به پوپک در این حالت هدیه می‌دهد 11 است. به شکل مشابه اگر توک a=2a=2 را انتخاب کند آنگاه رشته‌اش را به دو رشته 110,101110, 101 تقسیم می‌کند و رشته‌ای که کادو می‌دهد 100100 خواهد بود در حالی که با انتخاب a=1a=1 ، رشته‌ای که توک به پوپک هدیه می‌دهد 110101110101 می‌شود، پس چون عدد مربوط به این‌ رشته از بقیه رشته‌ها بیشتر است توک باید این رشته را به پوپک کادو بدهد! (می‌توانید بقیه‌ حالات را نیز بررسی کنید، که به جواب کوچکتری نسبت به این رشته منتهی می‌شوند)

چنانچه عدد متناظر با رشته‌ای که توک کادو می ‌دهد 00 باشد، در خروجی 00 چاپ کنید.

اگر با عملگر andand آشنایی ندارید اینجا را ببینید.

ورودی🔗

در تنها خط ورودی رشته باینری که توک خریده است، آمده است.

اگر طول رشته توک را با nn نشان دهیم 1n100 0001 \le n \le 100\ 000

خروجی🔗

در تنها خط خروجی رشته‌ای که توک به پوپک هدیه می‌دهد را چاپ کنید.

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

011
Plain text

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

11
Plain text

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

110101
Plain text

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

110101
Plain text

این تست نمونه در صورت سوالات توضیح داده شده است .

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

0000
Plain text

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

0
Plain text

دنباله تورج‌پسند


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

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

آقا تورج دنباله a1,a2,....,aka_1, a_2, .... , a_k از اعداد حسابی را دنباله‌ای خوب می‌داند اگر شرایط زیر برقرار باشد :‌

0a1d0 \le a_1 \le d 2ik,  aiai1d2\le i \le k ,\ \ \mid a_i - a_{i - 1} \mid \le d

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

ورودی🔗

در تنها خط ورودی به ترتیب دو عدد kk و dd آمده است. 0d2 0000 \le d \le 2\ 000 1k1001 \le k \le 100

خروجی🔗

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

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

2 2
Plain text

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

12
Plain text

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

1 10
Plain text

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

11
Plain text

صمد و توک


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

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

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

آقا تورج فرمانده ارتش است. در راستای انجام پروژه‌ای محرمانه نیاز شده است که nn پایگاه ارتش با تعدادی تونل دوطرفه یه یکدیگر متصل شوند، ارتش می‌تواند بین هر دو پایگاه دلخواه ii و jj تونلی بسازد که طول آن عددی بین 11 تا 10910^9 (شامل هر دو) باشد.

ارتش می‌خواهد که این تونل‌ها را به شکلی بین برخی از پایگاه‌ها بسازد که در نهایت طول کوتاه‌ترین مسیر از پایگاه ii به پایگاه jj برابر با Ai,jA_{i, j} باشد.

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

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

ورودی🔗

در خط اول ورودی عدد nn ، تعداد پایگاه‌های ارتش آمده است.

سپس در nn سطر بعدی ماتریس AA می‌آید.

در هر سطر nn عدد می‌آید که عدد jj ام در سطر i+1i+1 ام ورودی ، طول کوتاه‌ترین مسیر از پایگاه ii به jj را مشخص می‌کند، تضمین می‌شود که Ai,i=0A_{i, i} = 0 است.

1n5001 \le n \le 500 ij:1Ai,j109i \neq j : 1 \le A_{i, j} \le 10^9 i=j:Ai,j=0 i = j : A_{i, j} = 0

خروجی🔗

چناچه نمی‌توان تعدادی تونل دوطرفه با طول‌های دلخواه ساخت که طول کوتاه‌ترین مسیر از پایگاه ii به پایگاه jj برابر با Ai,jA_{i, j} باشد، در یک خط فقط عدد -1 را چاپ کنید .

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

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

2
0 4
4 0
Plain text

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

1
Plain text

کافی است یه تونل با طول 44 (زمان گذشتن از آن 44 است) ، بین پایگاه‌های 11 و 22 بسازیم.

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

1
0
Plain text

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

0
Plain text

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

2
0 10
56 0
Plain text

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

-1
Plain text

نمی‌توان تعدادی تونل ساخت که طول کوتاه‌ترین مسیر از پایگاه 11 به 22 با طول کوتاه‌ترین مسیر از پایگاه 22 به 11 برابر نباشد (تونل‌ها همگی دوطرفه‌اند)

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

3
0 4 8
4 0 4
8 4 0
Plain text

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

2
Plain text

انتقام توک


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

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

برای این کار، توک یک بمب در اتاق آقا تورج کار می‌گذارد.

آقا تورج وقتی متوجه بمب می‌شود که دیگر خیلی دیر شده و برای نجات دفترش می‌خواهد رمز بمب را حدس بزند. برای خنثی کردن بمب او باید nn تا عدد a1,a2,...,an1,ana_1,a_2,...,a_{n-1},a_{n}را انتخاب کند به طوری که هر کدام عددی بین 00 تا 23112^{31}-1 (شامل هر دو) هستند.

او qq ثانیه برای فکر کردن دارد. در هر ثانیه این حدس را می‌زند که xorxor دو عدد aia_i و aja_j برابر kk است. شما باید بعد از هر حدس به تورج بگویید که به چند طریق مختلف می‌تواند رمز را بزند (آرایه aa را انتخاب کند) که تمام حدس‌هایی که تا الان زده شده، در آرایه aa صدق کند (توجه کنید که ممکن است تعداد این حالات 00 باشد یعنی حالتی نباشد که با حدس‌ها هم‌‌خوانی داشته باشد). باقیمانده جواب را بر 109+710^9+7 چاپ کنید.

اگر با عملگر xorxor آشنایی ندارید اینجا را ببینید.

ورودی🔗

در خط اول ورودی دو عدد nn و qq داده شده است.

سپس در qq سطر بعدی در هر سطر یک حدس آقا تورج آمده است که به شکل سه عدد i,j,ki, j, k است.

1q300 0001 \le q \le 300\ 000 2n300 0002 \le n \le 300\ 000 1i,jn,ij1 \le i,j \le n , i\neq j 0k23110 \le k \le 2^{31}-1

خروجی🔗

به ازای هر حدس در qq سطر باقیمانده جواب مساله بر 109+710^9+7 را چاپ کنید.

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

3 2
1 2 100
2 3 71
Plain text

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

145586002
147483634
Plain text