B.病毒扩散(组合数学)

​题目传送门​

题意:本题的题意可以转换为t秒内走到(x,y)的病毒有多少。即可转化有多少种路径走到(x,y)(可以选择x+1,y+1,或不动)
显然根据乘法原理有:

B.病毒扩散(组合数学)_i++

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int mod=998244353,N=5e3;
typedef long long ll;
int c[N+5][N+5];
void fun(){
for(int i=0;i<=N;i++) c[i][0]=c[i][i]=1;
for(int i=2;i<=N;i++)
for(int j=1;j<i;j++)
c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;
}
int main(){
fun();
int n;
scanf("%d",&n);
while(n--){
int x,y,t;
scanf("%d%d%d",&x,&y,&t);
printf("%lld\n",(ll)c[t][x+y]*c[x+y][x]%mod);
}
return 0;
}