您的位置:首页 > 其它

牛客网Wannafly挑战赛11--白兔的式子

2018-03-09 22:42 323 查看


列出前几项 就可以看出这是一个二项式定理



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
*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;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: