给定一个长为 的数组 ,下标从 开始,值域为 ,请你求出该数组的元素有多少个不同的取值。
为了避免输入过长,请使用下面的伪随机数生成器 C++ 代码生成数组 。
如果您使用其他编程语言,请你自行实现下面的伪随机数生成器 >_<
#include <bits/stdc++.h>
using namespace std;
int n, a[10000010], seed, m;
signed main()
{
scanf("%d%d%d", &n, &m, &seed);
mt19937 mt(seed);
uniform_int_distribution<int> dist(0, m);
for (int i = 1; i <= n; ++i)
{
a[i] = dist(mt);
}
// 下面是你解本题的代码
return 0;
}
输入
输入一行三个整数
输出
输出一行一个整数,代表答案
样例
标准输入 复制文本 |
10 10 580 |
标准输出 复制文本 |
6 |
标准输入 复制文本 |
15 5 1444 |
标准输出 复制文本 |
6 |
标准输入 复制文本 |
10000000 10000000 998244353 |
标准输出 复制文本 |
6321805 |
提示
样例 生成的 为
样例 生成的 为
为了方便大家测试各种不同的哈希函数和冲突处理策略,本题的时空限制很宽,但建议不要用 STL 乃至 sort 水过这道题 TwT