牛客网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;
}
}
相关文章推荐
- Wannafly挑战赛11 B 白兔的式子【阶乘逆元 + 预处理 + 板子】
- Wannafly 挑战赛11 B白兔的式子
- Wannafly挑战赛11 B、白兔的式子
- Wannafly挑战赛11 B-白兔的式子
- Wannafly挑战赛11 白兔的式子
- Wannafly挑战赛11 白兔的式子 (组合数取模)
- Wannafly挑战赛11-白兔的式子(组合数取模)
- Wannafly挑战赛11 -A 白兔的分身术
- Wannafly挑战赛11 - 白兔的分身术
- Wannafly挑战赛11 D 白兔的字符串 [Hash]
- Wannafly挑战赛11-C:白兔的棋盘(轮廓线DP)
- Wannafly挑战赛11 A-白兔的分身术
- Wannafly挑战赛11 D-白兔的字符串
- wannafly挑战赛11----白兔的字符串
- Wannafly挑战赛11 D 白兔的字符串 (字符串hash)
- Wannafly挑战赛11_D_白兔的字符串(字符串hash)
- 白兔的式子(费马小定理+逆元)
- B-白兔的式子
- hihoCoder挑战赛11.题目4 : 高等理论计算机科学(LCA)
- Wannafly挑战赛11_A_B_D