题意解析
小码从x1y1这个点开始走,朝右边走的概率是,超下走的概率是,问经过n秒之后到达x2y2点的概率是多少?
思想
次实验,发生次.其中每一次要么发生要么不发生,发生的概率就是,不发生的概率就是
一共发生了多少次我们用:
1.=,分母我们要将其转化为逆元.
2.我们用快速幂去算
code
注意提交的时候需要把y1替换为ya
#define int long long
const int mod=998244353;
const int N=3e5+10;
int x1,x2,y1,y2,n,p,q;
int fac[N];
int qmi(int a,int b,int m)
{
a%=m;
int res=1;
while(b)
{
if(b&1) res=res*a%m;
a=a*a%m;
b>>=1;
}
return res;
}
int C(int a,int b)
{
int n=fac[a];
int m=fac[b]*fac[a-b]%mod;
return n*qmi(m,mod-2,mod)%mod;
}
signed main()
{
//预处理一下阶乘,方便后面计算cnk
fac[0]=1;
for(int i=1;i<N;i++)fac[i]=fac[i-1]*i%mod;
int t;std::cin>>t;
while(t--)
{
scanf("%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&n,&p,&q);
int dx=x2-x1,dy=y2-y1;
if(dx<0 || dy<0 ||dx+dy!=n)
{
std::cout<<0<<std::endl;
continue;
}
p=p*qmi(100,mod-2,mod)%mod;
q=q*qmi(100,mod-2,mod)%mod;
int ans=
C(n,dx)*qmi(p,dx,mod)%mod*qmi(q,dy,mod)%mod;
std::cout<<ans<<std::endl;
}
return 0;
}