超大整数因数的映射方式
若有 n=∏i=1kpici,则其所有 m=∏i=1k(ci+1) 个因数可以被方便地映射到 [0,m) 中整数上。具体地,我们设
fcs(i)fcp(i)=j=i∏k(cj+1)=j=1∏i(cj+1)
规定 fcs(k+1)=fcp(0)=1。则若有 x=∏i=1kpiei,0≤ei≤ci,它将被映射为 f(x)=∑i=1kfcs(i+1)ei。
这种映射方式好处多多:我们得以在 O(k) 的时间内计算任意指数序列的映射,或将一个映射唯一还原为指数序列(对 fcs(i+1) 逐层取模即可);更有 m−1−f(x)=f(n/x),在本题里极大地方便了计算。它还方便我们在 O(m logm)(k≤log2m)的时间内求高维前缀和——或者用数论的行话,狄利克雷前缀和:依序枚举 pi,枚举 ei,0<ei≤ci,再枚举前后缀两维度分拆出的映射数 x,y,利用 fcp(i−1) 和 fcs(i+1) 可以轻松拼合出所需映射。
单位根反演与莫比乌斯函数
记 ωn=exp(2π/n)。有整数 t,则 ∑i=0n−1ωnit=n[n∣t]。
由等比数列求和公式可以轻松证明。精妙的是下面一条:
0≤p<np⊥n∑ωnp=μ(n)
对于 gcd(p,n) 的条件,我们注意到 ∑d∣nμ(d)=[n=1] 常被用来处理互质条件,遂尝试利用之:
====0≤p<np⊥n∑ωnpd∣n∑μ(d)t=1∑n/dωnd⋅td∣n∑μ(d)t=1∑n/dωn/dtd∣n∑μ(d)[dn∣1]μ(n).
同样地,如果我们在指数上添加额外因子 q,也即 ∑0≤p<np⊥nωnpq,也可以导出类似结论:它等于
d∣gcd(n,q)∑μ(dn)d.
模 zn 意义下 F(z) 的循环卷积
求出 F(ωnt),t=0,1,⋯,n−1。则 (F(ωnt))k 就等于 F(z) 在 modn 意义下的 k 次幂求 z=ωnk 点值的结果。这可以由单位根的性质说明。
莫比乌斯函数与其他任意函数的狄利克雷卷积
也就是对于 n,对其所有因数 x,求
d∣x∑f(d)μ(dx)
设 n 有 m 个因数。这可以在 O(mlogm) 的时间内求出。注意到 μ(x)∈{0,−1,1},这也就意味着对任意质因子 pi,设 d 有 ei 个、x 有 ci 个,则只有 ci−ei≤1 时 f(d) 才可能被计入最终答案。我们可以仿照狄利克雷前缀和,在前 i 个阶段处理完“与 x 在 p1,p2,⋯,pi 的指数上差距 ≤1(cj−ej≤1),而在 pi+1,⋯ 的指数上与 x 完全相同(cj=ej)”的所有 d 的贡献。记它是 h(x,i);初始有 h(x,0)=f(x),转移有 h(x,i+1)=h(x,i)+(−1)h(x/pi+1,i)。