为什么单哈希可以AC
查看原帖
为什么单哈希可以AC
333800
qip101楼主2022/10/9 12:05
#include <bits/stdc++.h> 
using namespace std;
int n,ans=1;
char s[100100];
unsigned long long a[100100];
unsigned long long base=131;
unsigned long long mod=212370440130137957ll;
unsigned long long prime=233317;
unsigned long long hache(char s[])
{
	int len=strlen(s);
	unsigned long long ans=0;
	for(int i=0;i<len;i++)
		ans=(ans*base+(unsigned long long)s[i])%mod+prime;
	return ans;
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%s",s);
		a[i]=hache(s);
	}
	sort(a+1,a+n+1);
	for(int i=1;i<n;i++)
		if(a[i]!=a[i+1])
			ans++;
	printf("%d\n",ans);
	return 0;
}
2022/10/9 12:05
加载中...