双哈希数不同的子串
用 unsigned long long 做前缀哈希:h[i+1] = h[i] × B + 字母序号(a 记 1),不取模,让它自然溢出。
一段文本 abababcababcabababc(19 个字符,下标从 0 起)和一个模式 ababc。
再配一套「模 10^9+7」的哈希,两套值都一样才算相同。补全 key,输出 T 里长度为 3 的子串一共有几种。
(本题用 g++ -std=c++17 -O0 编译。)
用 unsigned long long 做前缀哈希:h[i+1] = h[i] × B + 字母序号(a 记 1),不取模,让它自然溢出。
一段文本 abababcababcabababc(19 个字符,下标从 0 起)和一个模式 ababc。
再配一套「模 10^9+7」的哈希,两套值都一样才算相同。补全 key,输出 T 里长度为 3 的子串一共有几种。
(本题用 g++ -std=c++17 -O0 编译。)
全部评论