题目地址


注意点:

  • map直接用[]访问即可.

#include<cstdio>
#include<iostream>
#include<map>
#define ul unsigned long long
using namespace std;
const int MAXN=4000;
map<ul,bool> has_;

ul base=101;
ul hashs[MAXN];
ul tmp[MAXN];
ul getHash(string str){
	ul hash_=0;
	for(int i=1;i<=str.length();i++){
		hashs[i]=hashs[i-1]*base+str[i-1];
	}
	hash_=hashs[str.length()];
	return hash_;
}
int main(){
	int n;
	scanf("%d",&n);
	int cnt=0;
	for(int i=1;i<=n;i++){
		string tmp;
		cin>>tmp;
		ul nowHash=getHash(tmp);
		if(has_[nowHash])continue;
		has_[nowHash]=1;
		cnt++;
	}
	printf("%d\n",cnt);
	return 0;
}