初始时,黑板上有一个正整数 (n) ,初始为 (i) 的概率是 (p_i) 。每一轮执行以下操作:
-
从 ([0,n]) 内随机选取一个正整数 (p)
-
把 (n) 擦掉,替换成 (p)
给定 (m) , 对每个 (iin[0,n])求 (m) 轮之后这个数为 (i) 的概率。
(1le nle 10^5,1le mle 10^{18})
考虑一个位置 i 对位置 j 的贡献,推一推
[F_j=sum_ifrac{p_i}i[x^{m-1}]prod_{k=j}^ifrac 1{1-frac xk}
]
考虑怎么快速的算右边的东东,先说点前置的知识
对于一些互不相同的 ( ho_i),存在 (a_i) 满足
[frac 1{prod_{i=1}^k(1-
ho_ix)}=sum_{i=1}^kfrac{a_i}{1-
ho_ix}
]
hy 说只要下面比上面次数大都可以(?)
同时乘上左边分母
[1=sum_{i=1}^ka_iprod_{j
eq i}(1-
ho_jx)
]
代入 (x=frac 1{ ho_i})
[a_i=frac 1{prod_{j
eq i}(1-frac{
ho_j}{
ho_i})}
]
然后对于这个式子的第 n 项
[egin{aligned}
left[x^n
ight]prod_{i=1}^kfrac 1{1-
ho_ix}&=[x^n]sum_{i=1}^kfrac{a_i}{1-
ho_i x}\
&=sum_{i=1}^ka_i
ho_i^n\
&=sum_{i=1}^kfrac{
ho_i^n}{prod_{j
eq i}left(1-frac{
ho j}{
ho i}
ight)}\
&=sum_{i=1}^kfrac{
ho_i^{n+k-1}}{prod_{j
eq i}(
ho_i-
ho_j)}
end{aligned}
]
有了前置知识后,我们考虑如何求出这个东东:
[egin{aligned}
left[x^{m-1}
ight]prod_{k=j}^ifrac 1{1-frac xk}&=sum_{k=j}^ifrac{(frac 1k)^{m-1+i-j+1-1}}{prod_{t
eq k,jle tle i}(frac 1k-frac 1t)}\
&=sum_{k=j}^ifrac{(prod_{t
eq k,jle tle i}t)(frac 1k)^{m-1}}{prod_{t
eq k,jle tle i}(t-k)}\
&=sum_{k=j}^ifrac{i!}{(j-1)!}frac{(frac 1k)^m}{(k-j)!(i-k)!(-1)^{k-j}}
end{aligned}
]
于是
[egin{aligned}
F_j&=sum_ifrac{p_i}i[x^{m-1}]prod_{k=j}^ifrac 1{1-frac xk}\
&=frac 1{(j-1)!}sum_{k=j}^nfrac{(-1)^{k-j}}{(k-j)!k^m}sum_{i=k}^nfrac{p_i(i-1)!}{(i-k)!}
end{aligned}
]
附上一张胡杨爷的手稿