QOJ.ac

QOJ

実行時間制限: 2.0 s メモリ制限: 512 MB 満点: 100

#15727. 哈希冲突

統計

作为一名懒人,Shik 在解决与字符串相关的题目时非常依赖哈希。以下是一个用 C 语言实现的简单哈希函数:

int hash(int n, int m, int p, const char *s) {
int h = 0;
for (int i = 0; i < n; i++) h = (h * p + s[i]) % m;
return h;
}

如果一对不同的字符串(无序对)具有相同的哈希值,我们称这对字符串为一个“冲突对”。Shik 声称自己非常幸运,哈希冲突的概率微乎其微。为了验证他的说法,你想在给定 $n, m, p$ 的情况下计算冲突对的数量。这里我们只考虑仅由大写字母 'A' 到 'Z' 组成的字符串。注意,因为给定了 $n$,字符串的长度必须恰好为 $n$。由于该数量可能非常大,你只需要输出它模 $10^6 + 3$ 的余数。

输入格式

输入恰好包含一行,有三个整数 $n, m, p$。

  • $1 \le n \le 10^6$
  • $2 \le p < m \le 30000$
  • $m$ 和 $p$ 是质数。

输出格式

请输出冲突对的数量模 $10^6 + 3$ 的值。

样例

输入样例 1

1 3 2

输出样例 1

100

输入样例 2

2 3 2

输出样例 2

75825

输入样例 3

21 13 5

输出样例 3

142108

输入样例 4

50216 9973 131

输出样例 4

405787

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.