传送门
一道水题debug一上午 我一定要发上来纪念一下
//话说最近在做历年NOIP,T1和T2有一道必WA。。。。弱成这样我大概没救了QAQ
其实就是 C [ n ] [ m ] = C [ n 1 ] [ m 1 ] + C [ n 1 ] [ m ]
然后把前缀和预处理出来,就可以 O 1 出答案啦/(ㄒoㄒ)/~~
而且我今天发现加了inline更慢了诶= =

using namespace std;
const int N=2001;
int t,k,n,m,c[N][N],a[N][N];

void read(int &x){
    x=0;char ch=getchar();
    for(;ch<'0'||ch>'9';ch=getchar());
    for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<3)+(x<<1)+ch-'0';
}

int Min(int a,int b){
    return a<b?a:b;
}

int main(){
    read(t);read(k);
    c[0][0]=1;
    for(int i=1;i<N;i++)
     for(int j=1;j<N;j++){
        if (j<=i) c[i][j]=(c[i-1][j-1]+c[i-1][j])%k;
        if (j>i) a[i][j]=a[i][j-1];else a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+(!c[i][j]);
     }
    for(int i=1;i<=t;i++){
        read(n);read(m);
        printf("%d\n",a[n+1][Min(n,m)+1]);
    }
    return 0;
}