【JLOI 2011】 不重复的数字
【题目链接】
【算法】
本题用map很好写,笔者用的是哈希的写法
【代码】
#include<bits/stdc++.h> using namespace std; #define MOD 10007 #define MAXN 50010 int T,n,len,i,x; int a[MAXN]; vector<int> e[MOD]; inline void Clear() { int i; for (i = 0; i < MOD; i++) e[i].clear(); } inline bool Find(int x) { int i,h; if (x < 0) h = (-x) % MOD; else h = x % MOD; for (i = 0; i < e[h].size(); i++) { if (e[h][i] == x) return true; } return false; } inline void ins(int x) { int h; if (x < 0) h = (-x) % MOD; else h = x % MOD; e[h].push_back(x); } int main() { scanf("%d",&T); while (T--) { len = 0; scanf("%d",&n); Clear(); for (i = 1; i <= n; i++) { scanf("%d",&x); if (!Find(x)) { a[++len] = x; ins(x); } } for (i = 1; i < len; i++) printf("%d ",a[i]); printf("%d\n",a[len]); } return 0; }