Cod sursa(job #2238456)

Utilizator dragos192k1Dragos-Iulian Galeteanu dragos192k1 Data 5 septembrie 2018 19:18:00
Problema Nunta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <cstdio>

using namespace std;

char a[210], b[210], c[210], aux;
int n, aa, bb, cc, rest;

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

    scanf("%d", &n);
    fclose(in);

    aa = bb = 1;
    a[0] = '1';
    b[0] = '2';

    if (n == 1) {
        printf("1");
        fclose(out);
        return 0;
    }
    if (n == 2) {
        printf("2");
        fclose(out);
        return 0;
    }

    for (int i = 3; i <= n; ++i) {
        rest = 0;

        if (bb > aa) {
            for (int j = aa; j < bb; ) a[j++] = '0';
            aa = bb;
        }

        int j;

        for (j = 0; j < aa; ++j) {
            aux = (a[j] - '0' + b[j] - '0' + rest) % 10 + '0';
            rest = (a[j] - '0' + b[j] - '0' + rest) / 10;
            a[j] = aux;
        }

        if (rest) {
            a[j] = rest + '0';
            ++aa;
        }

        for (int j = 0; j < bb; ++j) c[j] = b[j];
        cc = bb;

        for (int j = 0; j < aa; ++j) b[j] = a[j];
        bb = aa;

        for (int j = 0; j < cc; ++j) a[j] = c[j];
        aa = cc;
    }

    for (int i = bb - 1; i >= 0; --i) printf("%c", b[i]);

    fclose(out);
    return 0;
}