Cod sursa(job #652847)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 26 decembrie 2011 16:18:26
Problema Nunta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
#include <cstring>
using namespace std;

short a[3][200];
int n;

void suma(short a[], short b[])
{
    int i, t = 0;
    for (i = 1; i <= a[0] || i <= b[0] || t; ++i, t /= 10)
        a[i] = (t += a[i] + b[i]) % 10;
    a[0] = i - 1;
}

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

    scanf("%d", &n);

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

    a[0][0] = 1, a[0][1] = 1;
    a[1][0] = 1, a[1][1] = 1;
    a[2][0] = 1, a[2][1] = 2;

    for (int i = 2; i < n; ++i)
    {
        memcpy(a[0], a[1], sizeof(a[1]));
        memcpy(a[1], a[2], sizeof(a[2]));
        for (int i = 1; i <= a[2][0]; ++i) a[2][i] = 0;
        a[2][0] = 0;
        suma(a[2], a[0]);
        suma(a[2], a[1]);
    }

    for (int i = a[2][0]; i >= 1; --i)
        printf("%d", a[2][i]);

    return 0;
}