https://www.cnblogs.com/–ZHIYUAN/p/7445842.html#3956691
字符串长度为n,如果要计算从下标i开始长度为l的字符串hash值的模板
单hash
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
const int x=31;
unsigned long long h[maxn],xp[maxn],has[maxn];
int main()
{
char s[maxn];
scanf("%s",s);
int n=strlen(s);
h[n]=0;
for(int i=n-1; i>=0; i--)
{
h[i]=h[i+1]*x+(s[i]-'a');
}
xp[0]=1;
for(int i=1; i<=n; i++)
{
xp[i]=xp[i-1]*x;
}
int l;
scanf("%d",&l);
for(int i=0; i<n-l+1; i++)
{
has[i]=h[i]-h[i+l]*xp[l];
}
return 0;
}