MOCK PTS 20231127 B 数论题技巧拾贝

超大整数因数的映射方式

若有 n=i=1kpicin=\prod_{i=1}^k p_i^{c_i},则其所有 m=i=1k(ci+1)m=\prod_{i=1}^k(c_i+1) 个因数可以被方便地映射到 [0,m)[0,m) 中整数上。具体地,我们设 fcs(i)=j=ik(cj+1)fcp(i)=j=1i(cj+1) \newcommand\fcs{\operatorname{fcs}} \newcommand\fcp{\operatorname{fcp}} \begin{aligned} \fcs(i)&=\prod_{j=i}^{k}(c_j+1)\\ \fcp(i)&=\prod_{j=1}^i(c_j+1) \end{aligned} 规定 fcs(k+1)=fcp(0)=1\fcs(k+1)=\fcp(0)=1。则若有 x=i=1kpiei,0eicix=\prod_{i=1}^kp_i^{e_i},0\leq e_i\leq c_i,它将被映射为 f(x)=i=1kfcs(i+1)eif(x)=\sum_{i=1}^k\fcs(i+1)e_i

这种映射方式好处多多:我们得以在 O(k)\newcommand\bigO{\operatorname{O}}\bigO(k) 的时间内计算任意指数序列的映射,或将一个映射唯一还原为指数序列(对 fcs(i+1)\fcs(i+1) 逐层取模即可);更有 m1f(x)=f(n/x)m-1-f(x)=f(n/x),在本题里极大地方便了计算。它还方便我们在 O(m logm)\bigO(m{\color{blue}\ \log m})klog2m{\color{blue}k\leq \log_2 m})的时间内求高维前缀和——或者用数论的行话,狄利克雷前缀和:依序枚举 pip_i,枚举 ei,0<eicie_i,0<e_i\leq c_i,再枚举前后缀两维度分拆出的映射数 x,yx,y,利用 fcp(i1)\fcp(i-1)fcs(i+1)\fcs(i+1) 可以轻松拼合出所需映射。

单位根反演与莫比乌斯函数

ωn=exp(2π/n)\newcommand\w{\omega}\w_n=\exp(2\pi/n)。有整数 tt,则 i=0n1ωnit=n[nt]\sum_{i=0}^{n-1}\w_n^{it}=n[n\mid t]

由等比数列求和公式可以轻松证明。精妙的是下面一条:

0p<npnωnp=μ(n) \sum_{\substack{0\leq p<n\\p\perp n}}\w_n^p=\mu(n)

对于 gcd(p,n)\gcd(p,n) 的条件,我们注意到 dnμ(d)=[n=1]\sum_{d\mid n}\mu(d)=[n=1] 常被用来处理互质条件,遂尝试利用之: 0p<npnωnp=dnμ(d)t=1n/dωndt=dnμ(d)t=1n/dωn/dt=dnμ(d)[nd1]=μ(n). \begin{aligned} &\sum_{\substack{0\leq p<n\\p\perp n}}\w_n^p\\ =&\sum_{d\mid n}\mu(d)\sum_{t=1}^{n/d}\w_n^{d\cdot t}\\ =&\sum_{d\mid n}\mu(d)\sum_{t=1}^{n/d}\w_{n/d}^t\\ =&\sum_{d\mid n}\mu(d)\left[\frac{n}{d}\mid 1\right]\\ =&\mu(n). \end{aligned}

同样地,如果我们在指数上添加额外因子 qq,也即 0p<npnωnpq\sum_{\substack{0\leq p<n\\p\perp n}}\w_n^{pq},也可以导出类似结论:它等于 dgcd(n,q)μ(nd)d. \sum_{d\mid \gcd(n,q)}\mu(\frac{n}{d})d.

znz^n 意义下 F(z)F(z) 的循环卷积

求出 F(ωnt),t=0,1,,n1F(\w_n^t),t=0,1,\cdots,n-1。则 (F(ωnt))k(F(\w_n^t))^k 就等于 F(z)F(z)modn{}\bmod n 意义下的 kk 次幂求 z=ωnkz=\w_n^k 点值的结果。这可以由单位根的性质说明

莫比乌斯函数与其他任意函数的狄利克雷卷积

也就是对于 nn,对其所有因数 xx,求 dxf(d)μ(xd) \sum_{d\mid x}f(d)\mu\left(\frac{x}{d}\right)

nnmm 个因数。这可以在 O(mlogm)\bigO(m\log m) 的时间内求出。注意到 μ(x){0,1,1}\mu(x)\in\{0,-1,1\},这也就意味着对任意质因子 pip_i,设 ddeie_i 个、xxcic_i 个,则只有 ciei1c_i-e_i\leq 1f(d)f(d) 才可能被计入最终答案。我们可以仿照狄利克雷前缀和,在前 ii 个阶段处理完“与 xxp1,p2,,pip_1,p_2,\cdots,p_i 的指数上差距 1\leq 1cjej1c_j-e_j\leq 1),而在 pi+1,p_{i+1},\cdots 的指数上与 xx 完全相同(cj=ejc_j=e_j)”的所有 dd 的贡献。记它是 h(x,i)h(x,i);初始有 h(x,0)=f(x)h(x,0)=f(x),转移有 h(x,i+1)=h(x,i)+(1)h(x/pi+1,i)h(x,i+1)=h(x,i)+(-1)h(x/p^{i+1},i)

  • 2023年12月1日