ULL get(int l, int r) // 计算子串 str[l ~ r] 的哈希值 { return h[r] - h[l - 1] * p[r - l + 1]; }
连续的数组也可以用这种方法哈希
string s; cin>>s; s=" "+s; p[0]=1; for(int i=1;i<s.size();++i){ p[i]=p[i-1]*P; h[i]=h[i-1]*P+s[i]-'a'+1; }