编译器显示RE了,自己肉眼查了半天也没查出错,求助。谢谢各位。
#include<iostream>
#include<cmath>
#define ll int
using namespace std;
const ll N=2e3+3;
ll dp[N][N],ans[N][N],k;
ll read(){
ll res=0,f=1;
char ch;
while((ch=getchar())<'0'||ch>'9'){
if(ch=='-')f=-1;
}
while(ch>='0'&&ch<='9'){
res=res*10+ch-'0';
ch=getchar();
}
return res*f;
}
void DP(){
dp[0][0]=dp[1][0]=dp[1][1]=1;
for(ll i=2;i<=2000;i++){
dp[i][0]=1;
for(ll j=1;j<=i;j++){
dp[i][j]=(dp[i-1][j-1]+dp[i-1][j])%k;
ans[i][j]=ans[i-1][j]+ans[i][j-1]-ans[i-1][j-1];
if(!dp[i][j])ans[i][j]++;
}
ans[i][i+1]=ans[i][i];
}
}
void C(ll n,ll m){
if(m>n){
cout<<ans[n][n]<<endl;
}
else cout<<ans[n][m]<<endl;
}
int main()
{
ll T=read(),k=read();
DP();
while(T--){
ll n=read(),m=read();
C(n,m);
}
return 0;
}