题解:组合数学的知识,推理一下即可。
#include <stdio.h>
#include <string.h>
#define N 2001
int total[N][N];
void compute_total(){
int i,j;
for(i = 0; i < N; i ++){
total[i][0] = 0;
total[i][1] = 1;
total[i][i] = 1;
}
for( i = 2; i < N; i ++){
for(j = 2; j < i; j++ ){
total[i][j] = (total[i-1][j] * j + total[i-1][j-1])%1000;
}
}
}
int main(){
int i,n,t,num,all;
compute_total();
scanf("%d",&t);
while(t--){
all=0;
scanf("%d",&num);
for(i = 1; i <= num; i ++){
all=(all+total[num][i])%1000;
}
printf("%d\n",all);
}
return 0;
}