int a[110][110]; void Catalan() { int i,j,len,carry; a[1][0]=a[1][1]=1; a[2][0]=1,a[2][1]=2; len=1; for(i=3;i<105;i++) { carry=0; for(j=1;j<=len;j++)//做乘法 { int temp=a[i-1][j]*(4*i-2)+carry; a[i][j]=temp%10; carry=temp/10; } while(carry)//进位处理 { a[i][++len]=carry%10; carry/=10; } carry=0; for(j=len;j>=1;j--)//做除法 { int temp=carry*10+a[i][j]; a[i][j]=temp/(i+1); carry=temp%(i+1); } while(!a[i][len])//高位去零 len--; a[i][0]=len; } }