字符串哈希
cpp
#define int long long
std::mt19937_64 rng(std::chrono::steady_clock::now().time_since_epoch().count());
const int mod=1e9+9,B=rng()%mod;//B=117
int h[N],pw[N];
int getHash(int l,int r){
return h[r]-h[l-1]*pw[r-l+1];
}
void init(){
for(int i=0;i<s.size();i++){
h[i+1]=(h[i]*B%mod+s[i])%mod;
pw[i+1]=pw[i]*B%mod;
}
}