字符串哈希重点在于将字符串映射成一个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^ih[i]=h[i-1]*P+s[i];// h[i] -> s[1~i] 的哈希值 }
}
ull get(int l,int r){return h[r]-h[l]*p[r-l+1];
}
//判断两子串是否相同
bool substr(int l1,int r1,int l2,int r2){return get(l1,r1)==get(l2,r2);
}