Cod sursa(job #2324927)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 21 ianuarie 2019 18:58:36
Problema Nunta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <fstream>

using namespace std;

ifstream fin("nunta.in");
ofstream fout("nunta.out");

class BigNum
{
public:
    int data[1005];
    BigNum operator+(BigNum x)
    {
        BigNum rez;
        int t = 0;
        int lg = max(this->data[0], x.data[0]);

        for(int i = this->data[0] + 1; i <= lg + 1; ++i)
            this->data[i] = 0;
        for(int i = x.data[0] + 1; i <= lg + 1; ++i)
            x.data[i] = 0;
        for(int i = 1; i <= lg; ++i)
        {
            rez.data[i] = this->data[i] + x.data[i] + t;
            t = rez.data[i] / 10;
            rez.data[i] %= 10;
        }

        rez.data[0] = lg;
        if(t)
        {
            rez.data[0] = rez.data[0] + 1;
            rez.data[rez.data[0]] = t;
        }
        return rez;
    }
};

BigNum a, b, c;

int main()
{
    int n;
    fin >> n;

    a.data[0] = 1;
    a.data[1] = 1;
    b.data[0] = 1;
    b.data[1] = 2;

    if(n == 1)
    {
        fout << "1\n";
        return 0;
    }

    if(n == 2)
    {
        fout << "2\n";
        return 0;
    }

    for(int i = 3; i <= n; ++i)
    {
        c = a + b;
        a = b;
        b = c;
    }

    for(int i = c.data[0]; i >= 1; --i)
        fout << c.data[i];
    fout << '\n';
    return 0;
}