高精度出了问题,求助

P1255 数楼梯

LiChenyi05 @ 2024-03-31 14:56:52

#include <bits/stdc++.h>
using namespace std;
string f[5050];
void s(string s1,string s2,int x)
{
    string C;
    int a[5050];
    int b[5050];
    int c[5050];
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    int la=s1.size();
    int lb=s2.size();
    int maxlen=max(la,lb);
    int k=0;
    for(int i=la-1;i>=0;i--)
    {
        a[k++]=s1[i]-'0';
    }
    k=0;
    for(int i=lb-1;i>=0;i--)
    {
        b[k++]=s2[i]-'0';
    }
    for(int i=0;i<maxlen;i++)
    {
        c[i]+=a[i]+b[i];
        if(c[i]>9)
        {
            c[i+1]=c[i]/10;
            c[i]%=10;
        }
    }
    if(c[maxlen]!=0)
    {
        maxlen++;
    }
    k=0;
    for(int i=maxlen-1;i>=0;i--)
    {
        C[k++]=c[i]+'0';
    } 
    f[x]=C;
}
int main()
{
    int n;
    cin>>n;
    f[0]='0';
    f[1]='1';
    f[2]='2';
    for(int i=3;i<=n;i++)
    {
        s(f[i-1],f[i-2],i);
    }
    cout<<f[n];
    return 0;
}

我这样写高精度,为啥不能输出


|