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