为什么 60?
用了5个哈希
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int, int>
#define _for(i, a, b) for(int i = (a); i <= (b); i++)
#define _pre(i, a, b) for(int i = (a); i >= (b); i--)
const int N = 2e5 + 5, M = 1e6 + 10, mod = 1e6 + 3, mod1 = 1e5 + 7, mod2 = 1e5 + 3, mod3 = 1e6 + 7, mod4 = 411727;
int t, n, vis[M], vis2[M], vis3[M], vis4[M], vis5[M];
inline int read() {
char c = ' ';
int f = 1, x = 0;
while (c < '0' || c > '9') {
if (c == '-') f = -1;
c = getchar();
}
while (c >= '0' && c <= '9') {
x = x * 10 + c - '0';
c = getchar();
}
return x * f;
}
inline void wr(int x) {
if (x < 0) x = -x, putchar('-');
if (x > 9) wr(x / 10);
putchar(x % 10 + '0');
}
signed main() {
cin >> t;
while (t--) {
memset(vis, 0, sizeof vis);
memset(vis2, 0, sizeof vis2);
memset(vis3, 0, sizeof vis3);
memset(vis4, 0, sizeof vis4);
memset(vis5, 0, sizeof vis5);
cin >> n;
for (int i = 1; i <= n; i++) {
int x;
x = read();
if (!vis[(x % mod + mod) % mod] && !vis2[(x % mod1 + mod1) % mod1]
&& !vis3[(x % mod2 + mod2) % mod2] &&
!vis4[(x % mod3 + mod3) % mod3] && !vis5[(x % mod4 + mod4) % mod4]) {
wr(x), putchar(' ');
vis[(x % mod + mod) % mod] = 1,
vis2[(x % mod1 + mod1) % mod1] = 1, vis3[(x % mod2 + mod2) % mod2] = 1;
vis4[(x % mod3 + mod3) % mod3] = 1, vis5[(x % mod4 + mod4) % mod4] = 1;
}
}
puts("");
}
}