求助!!用结构体模拟高精后

P1255 数楼梯

匿名等待 @ 2022-07-02 16:46:37

#include<bits/stdc++.h>

using namespace std;
const int N=103;**此处数据为什么不可以改大一些?****

struct Bigint{

    int a[N],len;
    Bigint(int x=0)
    {
        memset(a,0,sizeof(a));
        for(len=1;x;len++)
        a[len]=x%10,x/=10;
        len--;
    }
    int &operator[](int i){
        return a[i];
    }
    void flatten(int l){
        len=l;
        for(int i=1;i<=len;i++)
        a[i+1]+=a[i]/10,a[i]%=10;
        for(;!a[len];) len--;
    }

    void print(){
        for(int i=max(len,1);i>=1;i--)
        printf("%d",a[i]);
    }

};

Bigint operator+(Bigint a,Bigint b)
{
    Bigint c;

    int len=max(a.len,b.len);
    for(int i=1;i<=len;i++)
    c[i]+=a[i]+b[i];
    c.flatten(len+1);
    return c;
}

int main()
{
    int n;
    scanf("%d",&n);

    Bigint f[5010];
    f[1] = Bigint (1);
    f[2] = Bigint (2);

    for(int i=3;i<=n;i++){
        f[i]=f[i-2]+f[i-1];
    }
    f[n].print();

    return 0;   
 } 

数据点大一些(如500时),存储输出数据的数组不够,但是一改就会出问题,为什么?求助!!


by Y_Kirito @ 2022-07-02 16:54:07

会出什么问题


|