输入字符串
求出每个串的哈希值 并存入一个数组中
ull sum=0;
for(int i=0;i<len;i++)
sum=sum*m+s[i];//sum=(sum*m+(ull)s[i])%m+prim(一个随机数)
将数组排序 通过一个循环求出不同的值的个数
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef unsigned long long ull;
char s[10010];
ull h[10010];
ull m=2333333333333ll;
ull hashe(char s[])
{
int len=strlen(s);
ull sum=0;
for(int i=0;i<len;i++)
sum=sum*m+s[i];//sum=(sum*m+(ull)s[i])%m+prim(一个随机数)
return sum;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%s",s);
h[i]=hashe(s);
}
sort(h+1,h+n+1);
int ans=1;
for(int i=1;i<n;i++)
if(h[i]!=h[i+1])
ans++;
printf("%d",ans);
return 0;
}