پروژه منچ: بخش ۲


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

یکی از ابزارهایی که برای پیاده‌سازی بازی منچ به آن نیاز داریم، «تاس» است. به همین منظور، می‌خواهیم تابع get_dice را پیاده‌سازی کنیم. این تابع هیچ آرگومانی ورودی نمی‌گیرد. این تابع بعد از هر بار فرخوانی، مقدار عددی که روی تاس، بعد از انداختن ظاهر می‌شود را نشان می‌دهد.

برای رسیدن به این هدف، با داشتن سه عدد اول (primeprime) AA، BB و mm دنباله تصادفی XX را به این صورت می‌سازیم:

Xk={Bk=1(A.Xk1+B)modmk>1 X_k = \left\{ \begin{array}{lr} B & k = 1 \\ (A.X_{k-1} + B) \mod m & k > 1 \\ \end{array} \right.

حال از روی دنباله‌ی XX عدد ظاهر شده در پرتاب kkام را که با dicekdice_k نشان می‌دهیم؛ از این رابطه بدست می‌آید:

dicek=(Xkmod6)+1dice_k = (X_k \mod 6) + 1

از شما می‌خواهیم تابع get_dice را طوری پیاده‌سازی کنید که بعد از kk بار صدا کردن مقدار dicekdice_k را چاپ کند. یعنی در اولین فراخوانی get_dice، مقدار dice1dice_1، در دومین فراخوانی get_dice، مقدار dice2dice_2 و... برگردانده شود.

ورودی🔗

در سطر اول ورودی، به‌ترتیب سه عدد اول AA، BB و mm داده می‌شود. 2A,B<m9972 \leq A, B < m \leq 997

در سطر دوم ورودی، عدد صحیح و مثبت nn داده می‌شود. 1n1000001 \leq n \leq 100 \, 000

خروجی🔗

خروجی nn سطر دارد، عدد نوشته شده در سطر kkام مقدار تابع get_dice بعد از kk بار فرخوانی است.

مثال🔗

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

37 71 101
10
Plain text

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

6
1
3
5
4
3
4
4
3
4
Plain text

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

479 139 911
8
Plain text

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

2
2
1
2
5
4
6
4
Plain text
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.