题意:
抛掷一枚硬币,正面朝上的概率是p/q (p/q <=0.5),抛掷k次,偶数次朝上的概率是X/Y,求X/Ymod(1e9+7)
思路:
这是一个二项分布,高中数学题
#include<bits/stdc++.h>
#define ll long long
#define N 1000000007
using namespace std;
const long long C=500000004;
ll pp(ll a,ll b)
{
ll ans=1;
while(b)
{
if(b&1) ans=(ans*a)%N;
a=(a*a)%N;
b>>=1;
}
return ans;
}
int main()
{
ll p,q,k;
ll ans=0;
ll t;
ll A;
cin>>t;
while(t--)
{scanf("%lld%lld%lld",&p,&q,&k);
q=p-2*q;
A=__gcd(q,p);
q/=A;
p/=A;
q=(pp(q,k)*C)%N;
p=pp(p,k*(N-2));
ans=((q*p)%N+C%N) %N;
printf("%lld\n",(ans%N+N)%N);
}
return 0;
}