给一个数列,每次随机选一个 $1$ 到 $m$之间的数加在数列末尾,数列中所有数的 $\gcd=1$ 时停止,求期望长度。
可以先把第一个加的数字确定。
$f[i]$表示从当前$\gcd=i$,变到$1$需要的期望步数。
$f[1]=0$
$f[i]=1+\frac{f[\gcd(i,j)]}{m}$
分析下复杂度$\sum_{i=1}^m\sum_{j=1}^{\frac{m}{i}}D(j)=\sum_{i=1}^m\sum_{d=1}^{\frac{m}{i}}\frac{\frac{m}{i}}{d}=\sum_{i=1}^m\frac{m}{i}\log m=O(m\log^2 m)$
代码
1 |
|