字符串哈希板子
字符串哈希重点在于将字符串映射成一个P进制数字
P通常取131
ull p[maxn],h[maxn];
const int P=131;
void init(){
p[0]=1,h[0]=0;
for(int i=1;i<=n;i++){
p[i]=p[i-1]*P;// p[i] -> p^i
h[i]=h[i-1]*P+s[i];// h[i] -> s[1~i] 的哈希值
}
}
ull get(int l,int r){
return h[r]-h[l-1]*p[r-l+1];
}
//判断两子串是否相同
bool substr(int l1,int r1,int l2,int r2){
return get(l1,r1)==get(l2,r2);
}