裸的杨辉三角前缀和,但-----
在求前缀和的时候有可能得到一个负数(由于取模的原因),所以一定要加上模数后再取模!!!!
#include <bits/stdc++.h> #define p 19260817 using namespace std; long long a[1010][1010]; long long sum[1010][1010]; signed main() { int n,m; a[1][0]=1; a[1][1]=1; for(register int i=2;i<=1005;i++){ a[i][0]=1; for(register int j=1;j<=i;j++){ a[i][j]=(a[i-1][j]+a[i-1][j-1])%p; } } for(int i=1;i<=1000;i++){ for(int j=1;j<=1000;j++){ sum[i][j]=(sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j]+p)%p; } } int q; cin>>q; for(int i=1;i<=q;i++){ int n,m; scanf("%d%d",&n,&m); printf("%lld ",sum[m][n]); } }