和HDU上一个一模一样,数据不一样,这个数据大,不过把那个改改就OK了。。
1 #include<stdio.h> 2 int p[1001][2001]; 3 int main() 4 { 5 int a,b,c; 6 p[1][0]=1;c=0; 7 for(a=2;a<=1000;a++) 8 { 9 for(b=0;b<=c;b++) 10 { 11 p[a][b]=(4*a-2)*p[a-1][b]; 12 } 13 for(b=c;b>=0;b--) 14 { 15 if(p[a][b]%(a+1)!=0) 16 { 17 p[a][b-1]+=10*(p[a][b]%(a+1)); 18 p[a][b]=p[a][b]/(a+1); 19 } 20 else 21 p[a][b]=p[a][b]=p[a][b]/(a+1); 22 } 23 for(b=0;b<=c;b++) 24 { 25 if(p[a][b]>9) 26 { 27 p[a][b+1]+=p[a][b]/10; 28 p[a][b]=p[a][b]%10; 29 if(b+1>c) 30 c=b+1; 31 } 32 } 33 } 34 while(scanf("%d",&a)!=EOF) 35 { 36 c=0; 37 for(b=2000;b>=0;b--) 38 { 39 if(p[a][b]!=0) 40 c=1; 41 if(c) 42 printf("%d",p[a][b]); 43 } 44 printf("\n"); 45 } 46 return 0; 47 }