高精度乘超时
查看原帖
高精度乘超时
311747
roooot4楼主2022/2/11 13:53

好像在高精度乘那里超时了,希望有大佬帮我看一下

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

2022/2/11 13:53
加载中...