QOJ.ac

QOJ

Limite de temps : 1 s Limite de mémoire : 256 MB Points totaux : 100

#20297. Legendarna gra

Statistiques

Pewna osoba grająca w szczytowe osiągnięcie gier mobilnych pewnego dnia bardzo się złości na grę, w którą musi grać podczas próby podpisania kontraktu. Gra przebiega następująco:

  • Pula kart składa się z liczb od $1$ do $2N+K$.
  • Gra losuje z tej puli kolejno $N$ kart (bez zwracania, czyli żadna liczba nie może zostać wylosowana dwukrotnie).
  • Po wylosowanych kartach gracz zgaduje, czy następna karta będzie większa, czy mniejsza.

Gracza złości to, że wskutek pecha po małej liczbie stale pojawia się jeszcze mniejsza, a po dużej — jeszcze większa. Postanawia temu zapobiec, zmieniając mechanizm losowości gry. Jego zmiana dodaje do losowania kart dwie reguły:

  • Jeśli wylosowano kartę z liczbą od $1$ do $N$, liczba na następnej wylosowanej karcie musi być ściśle większa od $N$ ($>N$).
  • Jeśli wylosowano kartę z liczbą od $N+K+1$ do $2N+K$, liczba na następnej wylosowanej karcie musi być ściśle mniejsza od $N+K+1$ ($<N+K+1$).

Gracz zastanawia się, jak bardzo popsuł grę tymi zmianami. Miarą tego jest stosunek liczby wszystkich możliwych różnych ciągów wylosowanych kart w zmodyfikowanej wersji gry do liczby wszystkich możliwych ciągów wylosowanych kart w zwykłej wersji. Prosi Cię o podanie tego stosunku modulo $10^9+7$.

Szczegóły implementacji

Należy zaimplementować następującą funkcję:

int oyun(int N, int K)
  • $N$ i $K$ to liczby całkowite określające pulę kart i liczbę losowanych kart zgodnie z opisem zadania.
  • Funkcja powinna zwrócić żądany stosunek.
  • Funkcja zostanie wywołana dokładnie raz w każdym teście.

Ograniczenia

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

Podzadania

Podzadanie Punkty Dodatkowe ograniczenia Zależności
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 Brak dodatkowych ograniczeń 1, 2, 3, 4

Przykład

oyun(2, 1)

Powyższe wywołanie funkcji powinno zwrócić 600000005.

Nasze liczby to $1,2,3,4,5$. Losujemy 2 karty. W zwykłej sytuacji można je wylosować na 20 różnych sposobów. W zmodyfikowanej grze, jeśli pierwsza karta to $1$, $2$, $4$ lub $5$, istnieją 3 różne możliwości wyboru drugiej karty; jeśli pierwsza karta to $3$, istnieją 4 możliwości. Łącznie w zmodyfikowanej grze jest więc 16 możliwości. $\frac{16}{20}=\frac45$. To prawdopodobieństwo odpowiada wartości $600000005$ przy przyjętym module.

Przykładowy program oceniający

Przykładowy program oceniający oczekuje każdego przypadku w następującym formacie:

$$N\ K$$

Jeżeli wymagana funkcja pomyślnie zwróci liczbę całkowitą, program wypisze ten wynik $R$ w następującym formacie:

$$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.