3 条题解

  • 0
    @ 2026-1-10 19:41:21
    #include <bits/stdc++.h>
    using namespace std;
    
    const int MAX_N = 10000;
    const int bi = 3e5 + 10;
    
    string fib[MAX_N + 5];
    
    string add(string a, string b)
    {
        int ah[bi] = {0}, bh[bi] = {0}, ch[bi] = {0}, x = 0;
        int la = a.size();
        int lb = b.size();
        int lc = max(la, lb);
    
        for (int i = 0; i < la; i++)
        {
            ah[i] = a[la - 1 - i] - '0';
        }
        for (int i = 0; i < lb; i++)
        {
            bh[i] = b[lb - 1 - i] - '0';
        }
    
        for (int i = 0; i < lc; i++)
        {
            ch[i] = ah[i] + bh[i] + x;
            x = ch[i] / 10;
            ch[i] %= 10;
        }
    
        if (x)
        {
            ch[lc] = x;
            lc++;
        }
    
        while (lc > 1 && ch[lc - 1] == 0)
        {
            lc--;
        }
    
        string cj = "";
        for (int i = lc - 1; i >= 0; i--)
        {
            cj += (ch[i] + '0');
        }
        return cj;
    }
    
    int main()
    {
        ios::sync_with_stdio(0);
        cin.tie(0);
    
        fib[1] = "1";
        fib[2] = "1";
        for (int i = 3; i <= MAX_N; i++)
        {
            fib[i] = add(fib[i - 1], fib[i - 2]);
        }
    
        int n;
        while (cin >> n)
        {
            cout << fib[n] << endl;
        }
    
        return 0;
    }
    
    

    信息

    ID
    1185
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    213
    已通过
    65
    上传者