题目:字符串哈希
思路:模板题。
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxn 10000
#define read(x) scanf("%d",&x)
#define maxm 1500
#define ull unsigned long long
#define P 131
int n;
char a[maxn+5][maxm+5];
ull Hash[maxn+5];
ull make_hash(int x) {
ull y=0;
int len=strlen(a[x]);
for(int i=0;i<len;i++) {
y=y*P+a[x][i]-'a'+1;
}
return y;
}
int main() {
read(n);
for(int i=1; i<=n; i++) {
scanf("%s",a[i]);
Hash[i]=make_hash(i);
}
sort(Hash+1,Hash+n+1);
int cnt=0;
for(int i=1;i<=n;i++) {
if(Hash[i]!=Hash[i-1]) cnt++;
}
printf("%d",cnt);
return 0;
}