目标是获取 posi∼posi+1 的正 hash 与倒 hash 值。
为什么这样写不对?求助各位大佬。
#define ull unsigned long long
ull h[2000031],h2[2000031],p[2000031];
p[0]=1;
for(int i=1;i<=2000010;i++) p[i]=p[i-1]*13331;
for(int i=1;i<=n;i++) h[i]=h[i-1]*13331+s[i];
for(int i=n;i;i--) h2[i]=h2[i+1]*13331+s[i];
ull hash1=h[pos[i+1]]-h[pos[i]-1]*p[pos[i+1]-pos[i]+1];
ull hash2=h2[pos[i]]-h2[pos[i+1]+1]*p[pos[i+1]-pos[i]+1];