题目传送门

题目大意: 一开始箱子里有 个黑球 个白球,每次有 的概率放进去一个黑球,有 的概率放进去一个白球,放完球后再随机拿一个球,问进行 次后箱子里黑球期望个数。

题解

可以注意到每次操作后球数是保持在 不会变的。

表示进行 次操作后黑球的期望个数,显然有

有四种情况需要考虑,其中两种是放一个黑球拿一个黑球放一个白球拿一个白球,这两种不会引起黑球数变化所以不需要考虑。

放一个黑球拿一个白球的概率为:,贡献为 ,因为多了一个黑球。

放一个白球拿一个黑球的概率为:,贡献为 ,因为少了一个黑球。

整理得到:

,那么有 ,展开得到 ,于是就可以 计算答案了。

代码如下:

#include <cstdio>
#define mod 1000000007

int n,m,k,a,b;
int ksm(int x,int y){int re=1;for(;(y&1?re=1ll*re*x%mod:0),y;x=1ll*x*x%mod,y>>=1);return re;}
#define inv(x) ksm(x,mod-2)

int main()
{
    scanf("%d %d %d %d %d",&n,&m,&k,&a,&b);
    int p=1ll*a*inv(b)%mod,T=1ll*(n+m)*inv(n+m+1)%mod;
    printf("%d",(1ll*ksm(T,k)*n%mod+1ll*p*T%mod*(ksm(T,k)-1+mod)%mod*inv(T-1)%mod)%mod);
}