求助哈希
  • 板块灌水区
  • 楼主SSH王子
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/7/20 16:26
  • 上次更新2023/11/4 14:03:16
查看原帖
求助哈希
525136
SSH王子楼主2021/7/20 16:26

在对于字符串 SS 的一个子串 S[x:y]S[x:y],我是这么求哈希值的,但不知道哪里错了,求大佬指点:

for(register int i=1;i<=k;i++) fac[i]=fac[i-1]*base%MOD;
make_hash(s,n,v);
return hash_val(x,y);

哈希函数是这么写的:

inline void make_hash(char*c,int len,ll*hash)
{
	for(register int i=1;i<=len;i++) hash[i]=(hash[i-1]*base+c[i])%MOD;
}

然后取哈希值是这么写的:

inline ll hash_val(int x,int y)
{
	ll b=(v[x-1]*fac[x-1]%MOD);
	return (((v[y]-b)%MOD)+MOD)%MOD;
}

但是对于一个 x,yx,y 它返回的结果跟正确的差很多,求大佬指出错误

2021/7/20 16:26
加载中...