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;
    }