A. 【例题1】字符串哈希
题目
思路
字符串哈希模板,将字符串转化为一百多进制的数,
(注意哈希函数不能命名为"
h
a
s
h
hash
hash",可能是因为关键字,本地编译正常,但OJ上或许会CE)
接着排序,然后每有一对数相同,答案就少一个。
代码
#include<iostream>
#include<algorithm>
#define ull unsigned long long
using namespace std;
const int p=150;
ull a[10001];
ull ha(string s)//哈希
{
int len=s.size();
ull h=0;
for(int i=1;i<=len;i++) h=h*p+s[i];
return h;
}
int main()
{
int n;
string s;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>s;
a[i]=ha(s);
}
sort(a+1,a+1+n);
int ans=n;
for(int i=1;i<n;i++) if(a[i]==a[i+1]) ans--;
cout<<ans;
}