CF1139D Steps to One
题目简述
最初有一个空数组 \(a\) 和一个整数常数 \(m\)。
执行如下算法:
- 从 \(1\) 到 \(m\) 的范围内等概率随机选择一个整数 \(x\),并将其添加到 \(a\) 的末尾.
- 计算数组 \(a\) 中所有整数的最大公约数.
- 如果最大公约数等于 \(1\),则停止操作.
- 否则,返回第 1 步.
求数组 \(a\) 的期望长度.
推导过程
设 \(L\) 为 \(a\) 停下时的长度,则 \(L\in\mathbb{N}^*\). 我们有公式
\[E(L)=\sum_{k=0}^\infty P(L>k)
\]
其中,\(P(L>k)\) 即前 \(k\) 步的 \(\gcd\) 大于 \(1\). 考虑枚举 \(\gcd\). 令 \(f(x,k)\) 表示前 \(k\) 步的 \(\gcd\) 是 \(x\) 的概率,\(g(x,k)\) 表示前 \(k\) 步的 \(\gcd\) 是 \(x\) 的倍数的概率.
则 \(g(x,k)\) 需要每一步抽到的数都是 \(x\) 的倍数,\(m\) 以内 \(x\) 的倍数有 \(\lfloor\frac{m}{x}\rfloor\) 个,于是抽到 \(x\) 的倍数的概率为 \(\frac{\lfloor m/x\rfloor}{m}\). 于是
\[g(x,k)=\left(\frac{\lfloor m/x\rfloor}{m}\right)^k
\]
同时,可以得到
\[g(x,k)=\sum_{x|d}f(d,k)
\]
即枚举 \(x\) 的倍数.
根据莫比乌斯反演,可得
\[f(x,k)=\sum_{x|d}\mu\!\left(\frac{d}{x}\right)\cdot g(d,k)
\]
根据 \(f\) 的定义,\(P(L>k)\) 即总体减去前 \(k\) 步 \(\gcd\) 为 \(1\) 的情况,即 \(1-f(1,k)\).
于是,
\[\begin{align*}
P(L>k)&=1-f(1,k) \\
&=1-\sum_{d=1}^m\mu(d)\cdot\left(\frac{\lfloor m/d\rfloor}{m}\right)^k \\
&=1-\left(1+\sum_{d=2}^m\mu(d)\cdot\left(\frac{\lfloor m/d\rfloor}{m}\right)^k\right) \\
&=-\sum_{d=2}^m\mu(d)\cdot\left(\frac{\lfloor m/d\rfloor}{m}\right)^k
\end{align*}
\]
那么
\[\begin{align*}
E(L)&=\sum_{k=0}^\infty\left(-\sum_{d=2}^m\mu(d)\cdot\left(\frac{\lfloor m/d\rfloor}{m}\right)^k\right) \\
&=1-\sum_{k=1}^\infty\sum_{d=2}^m\mu(d)\cdot\left(\frac{\lfloor m/d\rfloor}{m}\right)^k \\
&=1-\sum_{d=2}^m\mu(d)\cdot\sum_{k=1}^\infty\left(\frac{\lfloor m/d\rfloor}{m}\right)^k
\end{align*}
\]
令
\[S=\sum_{k=1}^\infty p^k
\]
则
\[S-p\cdot S=p
\]
即
\[S=\frac{p}{1-p}
\]
于是
\[\begin{align*}
E(L)&=1-\sum_{d=2}^m\mu(d)\cdot\sum_{k=1}^\infty\left(\frac{\lfloor m/d\rfloor}{m}\right)^k \\
&=1-\sum_{d=2}^m\mu(d)\cdot\frac{\frac{\lfloor m/d\rfloor}{m}}{1-\frac{\lfloor m/d\rfloor}{m}} \\
&=1-\sum_{d=2}^m\mu(d)\cdot\frac{\lfloor m/d\rfloor}{m-\lfloor m/d\rfloor}
\end{align*}
\]
可以线性计算.
浙公网安备 33010602011771号