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

题目传送门

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


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