列出前几项 就可以看出这是一个二项式定理
jc数组是n!%mod
fjc是n!逆元
C 是求组合数
代码是经过dalao提示了的
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 998244353;
ll qpow(ll a,ll b,ll c)
{
ll ans=1;
while(b)
{
if(b&1)ans=ans*a%c;
a=a*a%c;
b>>=1;
}
return ans;
}
ll jc[666666],fjc[666666];
ll C(ll n,ll m) /// n!/(m!*(n-m)!)
{
if(m==n||m==0)return 1;
return (jc[n]*fjc[m]%mod)*fjc[n-m]%mod;
}
int main()
{
jc[0]=jc[1]=1;
for(int i=2;i<=100010;i++)
jc[i]=jc[i-1]*i%mod;
fjc[100000]=qpow(jc[100000],mod-2,mod);
for(int i=99999;i>=0;i--)
fjc[i]=fjc[i+1]*(i+1)%mod;
int t;
scanf("%d",&t);
while(t --){
ll a,b,n,m;
cin >> a >> b>>n >> m;
ll cc = C(n-1,m-1);
ll aa = qpow(a,n-m,mod);
ll bb = qpow(b,m-1,mod);
ll ans = aa*bb%mod *cc %mod;
cout<<ans<<endl;
}
}