QOJ.ac

QOJ

実行時間制限: 2 s メモリ制限: 1024 MB 満点: 100 ハック可能 ✓

#18397. Tái chế dãy số

統計

Câu lạc bộ thuật toán KHUA tại Đại học Kyung Hee muốn tặng các dãy số cho các thành viên mới, noi theo văn hóa của giới PS (Problem Solving) là trao đổi các dãy số làm quà tặng trong những dịp kỷ niệm. Tuy nhiên, vì việc tạo ra dãy số mới mỗi lần rất phiền phức, họ quyết định tạo ra một dãy số và tái sử dụng nó để tạo ra các dãy số mới.

Họ tạo ra một dãy số tuần hoàn vô hạn $A_1, A_2, \ldots$. $N$ phần tử đầu tiên của $A$ được cho là $A_1, A_2, \ldots, A_{N}$, và với $i > N$ thì $A_i = A_{i - N}$. Mỗi phần tử của dãy số này là một số nguyên từ $0$ đến $M-1$. Với mỗi số nguyên $i$ thỏa mãn $1 \leq i \leq N$ và số nguyên $j$ thỏa mãn $0 \leq j \leq M-1$, họ muốn tặng một dãy số có độ dài $T$ $(T \leq N)$ được định nghĩa như sau:

$$B^{i, j}_k = (A_{i + k} + j)\;mod\,M$$

Tuy nhiên, nếu các dãy số được tạo ra theo cách này bị trùng lặp, mọi người có thể nhận ra rằng các dãy số đang được tái sử dụng, vì vậy họ muốn tránh tình trạng này nhiều nhất có thể.

Họ muốn dự đoán khả năng tái sử dụng dãy số bằng cách tính xác suất để hai dãy số bất kỳ được tạo ra từ việc tái sử dụng là giống nhau. Bạn cần tính xác suất để $B^{i_1, j_1}$ và $B^{i_2, j_2}$ bằng nhau khi chọn ngẫu nhiên các số nguyên $i_1, i_2$ ($1 \leq i_1, i_2 \leq N$) và $j_1, j_2$ ($0 \leq j_1, j_2 \leq M-1$) với xác suất đồng nhất. Vì mỗi số được chọn độc lập, trường hợp $(i_1, j_1) = (i_2, j_2)$ cũng có thể xảy ra. Xác suất cần tính phải bao gồm cả trường hợp này.

Dữ liệu vào

Dòng đầu tiên chứa hai số nguyên $N$ và $M$ cách nhau bởi dấu cách ($1 \leq N, M \leq 10^5$).

Dòng thứ hai chứa $N$ số nguyên $A_1, A_2, \ldots, A_{N}$ cách nhau bởi dấu cách ($0 \leq A_i \leq M - 1$).

Dòng thứ ba chứa số nguyên $T$ ($1 \leq T \leq N$).

Dữ liệu ra

In ra xác suất để hai dãy số được tạo ra từ việc tái sử dụng là giống nhau. Nếu xác suất tìm được dưới dạng phân số tối giản là ${P}/{Q}$, hãy in ra $P \times Q^{-1} \bmod 10^9 + 7$. Trong đó $Q^{-1}$ là nghịch đảo mô-đun của $Q$ theo modulo $10^9 + 7$.

Ví dụ

Dữ liệu vào 1

6 4
1 2 1 2 3 0
2

Dữ liệu ra 1

180555557

Ghi chú

Xác suất trong ví dụ đầu tiên là $13/72$.

Dữ liệu vào 2

3 1
0 0 0
2

Dữ liệu ra 2

1

Ghi chú

Trong ví dụ thứ hai, chỉ có một dãy số duy nhất có thể chọn là $(0, 0)$, nên xác suất để hai dãy số giống nhau là $1$.

Dữ liệu vào 3

5 10
1 1 2 3 5
3

Dữ liệu ra 3

140000001

Ghi chú

Xác suất trong ví dụ thứ ba là $1/50$, trong đó hai dãy số chỉ bằng nhau khi $(i_1, j_1) = (i_2, j_2)$.

Dữ liệu vào 4

28 12
0 3 1 2 3 1 2 1 2 5 8 6 7 8 6 7 6 7 10 1 11 0 1 11 0 11 0 3
3

Dữ liệu ra 4

724489801

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.