CF1139D Steps to One

CF1139D Steps to One

题目简述

最初有一个空数组 \(a\) 和一个整数常数 \(m\)

执行如下算法:

  1. \(1\)\(m\) 的范围内等概率随机选择一个整数 \(x\),并将其添加到 \(a\) 的末尾.
  2. 计算数组 \(a\) 中所有整数的最大公约数.
  3. 如果最大公约数等于 \(1\),则停止操作.
  4. 否则,返回第 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*} \]

可以线性计算.

posted on 2026-07-27 00:37  吴一鸣  阅读(7)  评论(0)    收藏  举报

导航