为什么只过了两个啊
查看原帖
为什么只过了两个啊
819200
229024213liujiahao楼主2023/4/5 22:03
#include<iostream>

using namespace std;


typedef long long int ULL;

const int N=1000003,P=131;

char str[N];
ULL a[N];
int n,ans;

ULL query(char str[])
{
	int t;
	ULL p[N];
	p[0]=0;
	for(int i=0;str[i];i++)
	{
		p[i+1]=p[i]*P+str[i];
		t=p[i+1];
	}
	return t;
}
int main()
{
	scanf("%d",&n);
	
	for(int i=0;i<n;i++)
	{
		cin>>str;
		a[i]=query(str);
	}
	for(int i=0;i<n-1;i++)
	{
		for(int j=i+1;j<n;j++)
		{
			if(a[i]==a[j]) ans++;
		}
	}
	printf("%d\n",n-ans);
	
	return 0;
}

2023/4/5 22:03
加载中...