Cod sursa(job #1915386)

Utilizator DanielRusuDaniel Rusu DanielRusu Data 8 martie 2017 20:52:02
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <cstdio>

using namespace std;

int f1[1000], f2[1000], f3[1000];
int N;

void copie(int a[], int b[]) {
    for(int i = 0; i <= b[0]; ++i) {
        a[i] = b[i];
    }
}

void aduna(int s[], int a[], int b[]) {
    int cat = 0;
    int i = 1;

    while(i <= a[0] || i <= b[0] || cat) {
        s[i] = a[i] + b[i] + cat;
        cat = s[i] / 10;
        s[i] %= 10;

        s[0] = max(s[0], i);
        ++i;
    }
}

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) {
        copie(f1, f2);
        copie(f2, f3);
        aduna(f3, f1, f2);
    }

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

    cout << '\n';

    return 0;
}