题意硬币朝上的概率为q/,p求扔k次硬币后其中有偶数次硬币朝上的概率的结果乘1e9+7
根据二项式定理,那么可展开为
设a为(p/q),设b为(1-p/q),展开后可由题意得我们只要偶数项(即a的指数为偶数的项,包括0),那么怎么把奇数项去掉,很容易想到我们把原式子减去 ((-a)+n)^n那么剩下的就是偶数项的二倍。
那么可得到公式为: ( (1+(1-(2q/p))^k)/2 +mod)%mod
#include <stdio.h>
#include <math.h>
#define ll long long
ll mod=1000000007;
void exgcd(ll a,ll b,ll& d,ll& x,ll& y)
{
if(!b) { d = a; x = 1; y = 0; }
else{ exgcd(b, a%b, d, y, x); y -= x*(a/b); }
}
ll inv(ll a, ll p)
{
ll d, x, y;
exgcd(a, p, d, x, y);
return d == 1 ? (x+p)%p : -1;
}
ll power(ll x,ll n)
{
ll res = 1;
while(n > 0){
if(n & 1) res = res*x % mod;
x = x*x % mod;
n >>= 1;
}
return res;
}
int main()
{
ll t;
scanf("%lld",&t);
while(t--)
{
ll p,q,k;
scanf("%lld%lld%lld",&p,&q,&k);
ll a=power(p-2*q,k)%mod;
ll b=power(p,k)%mod;
ll c=inv(b,mod)%mod;
c=(a*c+1)%mod;
c=c*inv(2,mod);
printf("%lld\n",(c)%mod);
}
}