推导递归解决的数论式——P1587 [NOI2016] 循环之美 题解
推导递归解决的数论式——P1587 [NOI2016] 循环之美 题解
快进到计算 \(\sum_{x=1}^n\sum_{y=1}^m[x\bot y][y\bot k]\)
做法一:拆掉 \([x\bot y]\)
\[\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor}
\begin{aligned}
&\sum_{x=1}^n\sum_{y=1}^m[x\bot y][y\bot k]
\\=&\sum_{y=1}^m[y\bot k]\sum_{d|y}\mu(d)\w{n}{d}
\\=&\sum_{d=1}^m\mu(d)\w{n}{d}\sum_{y'=1}^{\w md}[y'd\bot k]
\\=&\sum_{d=1}^m\mu(d)\w{n}{d}[d\bot k]\sum_{y'=1}^{\w md}[y'\bot k]
\end{aligned}
\]
引理:\(\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor} f(n)=\sum_{i=1}^n[i\bot k]=\w nd\varphi(k)+f(n\bmod k)\)
证明:
\[\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor}
\begin{aligned}
f(n)&=\sum_{i=1}^n[\gcd(i,k)=1]
\\&=\sum_{i=1}^n[\gcd(i\bmod k,k)=1]
\\&=\w{n}{k}\sum_{i=1}^k[\gcd(k,k)=1]+\sum_{i=1}^{n\bmod k}\sum_{i=1}^k[\gcd(i,k)=1]+
\\&=\w nd\varphi(k)+f(n\bmod k)
\end{aligned}
\]
可以 \(\mathcal O(k\log k)\) 求出 \(f(0,k)\sim f(k-1,k)\)。考虑整除分块,截取其中一段\([L,R]\)求值,原式化为:
\[\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor}
\begin{aligned}
&\sum_{d=L}^R\mu(d)\w{n}{d}[d\bot k]\sum_{y'=1}^{\w md}[y'\bot k]\\
=&\w{n}{L}f(\w mL)\sum_{d=L}^R\mu(d)[d\bot k]
\end{aligned}
\]
设 \(g(n,k)=\sum_{d=1}^n\mu(d)[d\bot k]\),继续推导递归式:
\[\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor}
\begin{aligned}
g(n,k)&=\sum_{d=1}^n\mu(d)[d\bot k]
\\&=\sum_{d=1}^n\mu(d)\sum_{D|d,D|k}\mu(D)
\\&=\sum_{D|k}\mu(D)\sum_{d'=1}^{\w nD}\mu(dD)
\end{aligned}
\]
因为当 \(\gcd(D,d)\ne 1\) 时,\(\mu(dD)=0\),所以 \(\mu(dD)=\mu(d)\mu(D)[d\bot D]\),继续推导:
\[\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor}
\begin{aligned}
g(n,k)&=\sum_{D|k}\mu(D)\sum_{d'=1}^{\w nD}\mu(dD)
\\&=\sum_{D|k}\mu(D)\sum_{d'=1}^{\w nD}\mu(d)\mu(D)[d\bot D]
\\&=\sum_{D|k}\mu^2(D)\sum_{d'=1}^{\w nD}\mu(d)[d\bot D]
\\&=\sum_{D|k}\mu^2(D)g(\w nD,D)
\end{aligned}
\]
边界:\(g(0,k)=0,g(n,1)=\sum_{i=1}^n\mu(i)\),用杜教筛
这东西整体和杜教筛很像,粗略的分析一下,由于 \(\mu^2(D)\) 相当于 \(D\) 无平方因子,结合杜教筛类似的复杂度分析,应该为 \(\mathcal O(2^{\sigma(k)}n^{\frac 23})\)。
做法二:拆掉 \([k\bot y]\)
\[\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor}
\begin{aligned}
f(n,m,k)=&\sum_{x=1}^n\sum_{y=1}^m[x\bot y][y\bot k]
\\=&\sum_{x=1}^n\sum_{y=1}^m[x\bot y]\sum_{d|y,d|k}\mu(d)
\\=&\sum_{d|k}\mu(d)\sum_{x=1}^n\sum_{y'=1}^{\w md}[x\bot dy']
\\=&\sum_{d|k}\mu(d)\sum_{x=1}^n\sum_{y'=1}^{\w md}[x\bot y'][x\bot d]
\\=&\sum_{d|k}\mu(d)f(\w md,n,d)
\end{aligned}
\]
边界 \(\def \w#1#2{\left\lfloor\frac{#1}{#2}\right\rfloor} f(0,m,k)=f(n,0,k)=0,f(n,m,1)=\sum_{d=1}\mu(d)\w nd \w md\)。
复杂度据说是 \(\mathcal O(\sqrt n\log n\log m+n^{\frac 23})\)。





浙公网安备 33010602011771号