**基本思路**
明显的杨辉三角和二维前缀和
但是
非常坑的一点就是取模中对于数字正负性的处理需要注意
**代码**
```
#include<bits/stdc++.h>
using namespace std;
const int maxx=1001;
int a[maxx][maxx],lcj[maxx][maxx];
int main(){
memset(a,0,sizeof(a));
memset(lcj,0,sizeof(lcj));
int q;
scanf("%d",&q);
//初始化杨辉三角
for(int i=1;i<maxx;i++) a[i][0]=1;
a[1][1]=1;
//暴力循环打表
for(int i=2;i<maxx;i++)
for(int j=1;j<=i;j++)
a[i][j]=(a[i-1][j]+a[i-1][j-1])%19260817;//注意取模
for(int i=1;i<maxx;i++) a[i][0]=0;
for(int i=1;i<maxx;i++){
for(int j=1;j<=i;j++){
//记住一定要加19260817,保证所推出的数据为正
lcj[i][j]=(long long )(a[i][j]+lcj[i-1][j]+lcj[i][j-1]-lcj[i-1][j-1]+19260817)%19260817;//
}
//填充杨辉三角的空白部分,维护二维前缀和的正常操作
for(int k=i+1;k<maxx;k++)
lcj[i][k]=lcj[i][i];
}
while(q--){
int x,y;
scanf("%d%d",&x,&y);
//查表
printf("%d\n",lcj[y][x]);
}
return 0;
}
```
08-31