QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 256 MB Total points: 100

#20297. משחק אגדי

Statistics

אדם המשחק במשחקים המובילים לטלפון הנייד מתרגז מאוד יום אחד על המשחק שעליו לשחק בזמן שהוא מנסה לחתום על חוזה. המשחק מתנהל כך:

  • יש מאגר קלפים הכולל את המספרים מ־$1$ עד $2N+K$.
  • המשחק שולף $N$ קלפים בזה אחר זה מתוך מאגר זה (ללא החזרה, כלומר אי אפשר לשלוף אותו מספר פעמיים).
  • לאחר הקלפים שנשלפו, השחקן מנחש אם הקלף הבא יהיה גבוה יותר או נמוך יותר.

מה שמרגיז את השחקן הוא שבגלל חוסר המזל שלו, אחרי מספר קטן מופיע שוב ושוב מספר קטן יותר, ואחרי מספר גדול מופיע שוב ושוב מספר גדול יותר. בעקבות זאת השחקן מבקש למנוע זאת באמצעות שינוי מנגנון האקראיות של המשחק. השינוי שלו מוסיף לשליפת הקלפים את שני הכללים הבאים:

  • אם נשלף קלף שמספרו בין $1$ ל־$N$, מספרו של הקלף הבא שיישלף חייב להיות גדול ממש מ־$N$ ($>N$).
  • אם נשלף קלף שמספרו בין $N+K+1$ ל־$2N+K$, מספרו של הקלף הבא שיישלף חייב להיות קטן ממש מ־$N+K+1$ ($<N+K+1$).

השחקן תוהה עד כמה שיבש את המשחק לאחר השינויים האלה. מידת השיבוש היא היחס בין מספר כל הרצפים השונים האפשריים של שליפת קלפים בגרסה ששונתה לבין מספר כל הרצפים האפשריים של שליפת קלפים בגרסה הרגילה. הוא מבקש מכם את היחס הזה מודולו $10^9+7$.

פרטי מימוש

עליכם לממש את הפונקציה הבאה:

int oyun(int N, int K)
  • $N$ ו־$K$ הם מספרים שלמים הקובעים את מאגר הקלפים ואת מספר הקלפים שיש לשלוף, כפי שתואר בשאלה.
  • הפונקציה צריכה להחזיר את היחס המבוקש.
  • הפונקציה תיקרא פעם אחת בדיוק בכל בדיקה.

מגבלות

  • $1\le N\le 10^6$.
  • $1\le K\le 100$.

תת־משימות וניקוד

תת־משימה נקודות מגבלות נוספות תלויות
1 10 $1\le N,K\le 6$ —
2 18 $1\le N\le 100$ 1
3 6 $1\le N\le 1000$ 1, 2
4 47 $1\le N\le 10^4$ 1, 2, 3
5 19 אין מגבלות נוספות 1, 2, 3, 4

דוגמאות

oyun(2, 1)

הקריאה לפונקציה שלעיל צפויה להחזיר $600000005$.

המספרים שלנו הם $1,2,3,4,5$. נשלוף 2 קלפים. במצב הרגיל אפשר לשלוף את הקלפים ב־20 דרכים שונות. במשחק ששונה, אם הקלף הראשון הוא $1$, $2$, $4$ או $5$, קיימות 3 אפשרויות שונות לקלף השני; אם הוא $3$, קיימות 4 אפשרויות שונות לקלף השני. לכן קיימות בסך הכול 16 אפשרויות במשחק ששונה. $\frac{16}{20}=\frac45$. הסתברות זו שקולה ל־$600000005$ תחת המודולוס שלנו.

תוכנית בדיקה לדוגמה

תוכנית הבדיקה לדוגמה מצפה לכל מקרה בפורמט הבא:

$$N\ K$$

אם הפונקציה המבוקשת מחזירה מספר שלם בהצלחה, היא תדפיס את התוצאה $R$ בפורמט הבא:

$$R$$

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#2824EditorialOpenNew Editorial for Problem #20297louyuxuanView

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.