题意:
裸的杨辉三角
code
#include<stdio.h> #include<algorithm> using namespace std; int n,m,k,c[2010][2010],s[2010][2010]; void ycl() { c[1][1]=1; for(int i=0;i<=2000;++i) c[i][0]=1; for(int i=2;i<=2000;++i) for(int j=1;j<=i;++j) { c[i][j]=(c[i-1][j]+c[i-1][j-1])%k; } for(int i=2;i<=2000;++i) { for(int j=1;j<=i;++j) { s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]; if(!c[i][j]) s[i][j]++; } s[i][i+1]=s[i][i]; } } int main() { int T; scanf("%d%d",&T,&k); ycl(); while(T--) { scanf("%d%d",&n,&m); if(m>n) m=n; printf("%d ",s[n][m]); } return 0; }