Cod sursa(job #935405)

Utilizator mvcl3Marian Iacob mvcl3 Data 3 aprilie 2013 13:23:31
Problema Nunta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#include <cstring>
#include <assert.h>
using namespace std;

char fin[] = "nunta.in";
char fout[] = "nunta.out";
const int maxSize = 500;

int n;
short a[maxSize], b[maxSize], c[maxSize];

inline void add()
{
    int i, t;
    for(i = 1, t = 0; i <= a[0] || i <= b[0] || t; ++ i, t /= 10)
        c[i] = (t += a[i] + b[i]) % 10;

    c[0] = i - 1;
}

int main()
{
    freopen(fin, "r", stdin);
    freopen(fout, "w", stdout);

    scanf("%d", &n);
    assert(n);

    if(n <= 2) printf("%d", n);
    else
    {
        a[0] = b[0] = 1, a[1] = 1, b[1] = 2;

        for(int i = 3; i <= n; ++i)
        {
            add();
            memcpy(a, b, b[0] * sizeof(int));
            memcpy(b, c, c[0] * sizeof(int));
        }

        assert(c[0] > 0);
        for(int i = c[0]; i; -- i) printf("%d", c[i]);
        printf("\n");
    }
}