
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;
}
}


