1 条题解

  • 0
    @ 2025-2-14 21:01:00

    C++ :

    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int N(4001);
    int fib[N][N/3]={0};
    //ifstream cin("exam1.in");
    //ofstream cout("exam1.out");
    void add(int *a,int *b,int *c)
    {
        c[0]=max(a[0],b[0]);    
        for (int i=1;i<=c[0];i++)
        {
            c[i]+=a[i]+b[i];
            c[i+1]+=c[i]/10;
            c[i]%=10;
        }
        if (c[c[0]+1]) c[0]++;
    }
    void init()
    {
        fib[1][0]=fib[2][0]=1;
        fib[1][1]=fib[2][1]=1;
        for (int i=3;i<N;i++)
            add(fib[i-1],fib[i-2],fib[i]);
    }
    void output(int n)
    {
        for (int i=fib[n][0];i>0;i--) cout<<fib[n][i];
        cout<<endl;
    }    
    int main()
    {
        init();
        int n;
        while (cin>>n)
            output(n);
        return 0;
    }
    
    
    • 1

    信息

    ID
    594
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者