NC15251. 白兔的式子
描述
有T组询问,每次给出a,b,n,m,求f[n][m] mod (998244353)
输入描述
第一行为一个整数T,表示询问个数。
接下来一共T行,每行四个整数a,b,n,m。
输出描述
一共T行,每行一个整数,表示f[n][m] mod (998244353)
示例1
输入:
2 2 3 3 3 3 1 4 1
输出:
9 27
C++11(clang++ 3.9) 解法, 执行用时: 117ms, 内存消耗: 2944K, 提交时间: 2018-03-09 20:55:30
# include <bits/stdc++.h> # define N 100010 # define M 998244353 using namespace std; int a,b,n,m; int jc[N]; int qpow(int x,int n,int d=1){ for ( ;n;n>>=1,x=1ll*x*x%M) if (n&1) d=1ll*d*x%M; return d; } void solve(){ int ans = 1ll*jc[n]*qpow(1ll*jc[n-m]*jc[m]%M,M-2)%M * qpow(a,n-m) % M * qpow(b,m)%M; printf("%d\n",ans); } int main(){ int T; scanf("%d",&T); jc[0]=1; for (int i=1;i<N;++i)jc[i]=1ll*jc[i-1]*i%M; while (T--){ scanf("%d%d%d%d",&a,&b,&n,&m); --n; --m; solve(); } return 0; }