好像在高精度乘那里超时了,希望有大佬帮我看一下
#include<bits/stdc++.h>
using namespace std;
int n;
int a[505][500];
void add(int i,int j)
{
int k[500],len=a[j][0]+a[i-1-j][0]-1;
memset(k,0,sizeof(k));
for(int x=1;x<=a[j][0];x++)
for(int y=1;y<=a[i-1-j][0];y++)
k[x+y-1]=k[x+y-1]+a[j][x]*a[i-1-j][y];
for(int x=1;x<=len;x++)
{
k[x+1]=k[x+1]+k[x]/10;
k[x]=k[x]%10;
}
if(k[len+1]) len++;
a[i][0]=max(a[i][0],len);
for(int x=1;x<=a[i][0];x++)
a[i][x]=a[i][x]+k[x];
for(int x=1;x<=a[i][0];x++)
{
a[i][x+1]=a[i][x+1]+a[i][x]/10;
a[i][x]=a[i][x]%10;
}
if (a[i][a[i][0]+1]) a[i][0]++;
}
int main ()
{
cin>>n;
a[0][1]=1;
a[0][0]=1;
for(int i=1;i<=n;i++)
{
for(int j=0;j<i;j++)
add(i,j);
}
for(int i=a[n][0];i>=1;i--)
cout<<a[n][i];
cout<<endl;
return 0;
}