Cod sursa(job #1915440)

Utilizator DanielRusuDaniel Rusu DanielRusu Data 8 martie 2017 21:01:42
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <cstdio>

using namespace std;

#define DIM 100

short f1[DIM], f2[DIM], f3[DIM];
int N;

int main() {
    freopen("nunta.in","r",stdin);
    freopen("nunta.out","w",stdout);

    cin >> N;

    if(N < 4) {
        cout << N << '\n';
        return 0;
    }

    f1[0] = f1[1] = 1;
    f2[0] = 1, f2[1] = 2;
    f3[0] = 1, f3[1] = 3;

    for(int i = 4; i <= N; ++i) {
        for(int j = 0; j <= f2[0]; ++j) {
            f1[j] = f2[j];
        }

        for(int j = 0; j <= f3[0]; ++j) {
            f2[j] = f3[j];
        }

        short cat = 0;
        int j = 1;

        while(j <= f1[0] || j <= f2[0] || cat) {
            f3[j] = f1[j] + f2[j] + cat;
            cat = f3[j] / 10;
            f3[j] %= 10;

            f3[0] = max(f3[0], (short)j);
            ++j;
        }
    }

    for(int i = f3[0]; i > 0; --i) {
        cout << (int)f3[i];
    }

    cout << '\n';

    return 0;
}