翻译自 https://zhuanlan.zhihu.com/p/85169630
字符串是 0-index.
周期引理:对于长为 n 的字符串 s,如果 p,q 均为 s 的周期,并且 p+q−gcd(p,q)≤n,那么 gcd(p,q) 也是 s 的周期。
定义 sp(i)=simodp,sq(i)=simodp,用生成函数来描述它,对于每个字符赋一个互不相等的权值作为系数,那么 sp(x)=P(x)1−xp,sq(x)=Q(x)1−xq,其中 P(x) 是 p−1 次多项式,Q(x) 是 q−1 次多项式。
想要验证 sp(x) 和 sq(x) 完全相同,将两者作差得到 sp(x)−sq(x)=1−xgcd(p,q)(1−xp)(1−xq)(1−xq1−xgcd(p,q)P(x)+1−xp1−xgcd(p,q)Q(x))=1−xgcd(p,q)(1−xp)(1−xq)H(x),容易长除法验证 (1−xgcd(p,q)) 是 (1−xp) 和 (1−xq) 的因式。
右边两个都是 p+q−gcd(p,q)−1 次多项式,而左边是常数项不为 0 的多项式。由于 p,q 均为 s 的周期那么 sp(x) 和 sq(x) 的 [0,n−1] 的各项系数都相同,那么 sp(x)−sq(x) 最低 n 项系数均为 0,由于 p+q−gcd(p,q)−1≤n−1,如果 H(x) 不为 0,那么和 1−xgcd(p,q)(1−xp)(1−xq) 的常数项一乘就得到了 ≤n−1 项的不为 0 的系数。所以得出 H(x)=0.
于是我们知道 sp(x) 与 sq(x) 完全相同,假设其为 f(x),p,q 同时为其周期。而根据裴蜀定理,方程 p⋅u+q⋅v=gcd(u,v) 存在整数解,从而有 si=f(i)=f(i+p⋅u)=f(i+p⋅u+q⋅v)=f(i+gcd(p,q))=si+gcd(p,q),周期引理得证。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?