为什么我用两个base会错啊
查看原帖
为什么我用两个base会错啊
359824
sunken_feather楼主2020/10/10 10:52

理论上更不会错才对啊qaq

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
unsigned long long a[10010],b[10010];
char str[2010];
int main()
{
	int n,len,sum=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%s",str+1);
		len=strlen(str+1);
		for(int j=1;j<=len;j++){
			a[i]=a[i]*131+(unsigned long long)str[j];
			b[i]=b[i]*1331+(unsigned long long)str[j];
		}
	}
	sort(a+1,a+n+1);
	sort(b+1,b+n+1);
	for(int i=1;i<=n;i++)
	 if(a[i]!=a[i-1]||b[i]!=b[i-1]) sum++;
	printf("%d",sum);
	return 0;
} 
2020/10/10 10:52
加载中...