Cod sursa(job #645769)

Utilizator SchumiDumitru Andrei Georgian Schumi Data 10 decembrie 2011 14:55:33
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>
#include <cstring>

using namespace std;

int d1[250], d2[250], d3[250];
int n;

int max(int x, int y)
{
    if(x > y) return x;
    return y;
}

void adunare(int x[300], int y[300], int z[300])
{
    int i;
    for(i = 1; i <= max(x[0], y[0]); ++i)
        z[++z[0]] = x[i] + y[i];
    for(i = 1; i <= z[0]; ++i) {
        if(z[i] >= 10) {
            z[i] %= 10;
            ++z[i+1];
        }
    }
    if(z[z[0] + 1] != 0)
        ++z[0];
}


int main()
{
    int i;
    freopen ("nunta.in", "r", stdin);
    freopen ("nunta.out", "w", stdout);
    scanf("%d", &n);
    d1[0] = 1;
    d2[0] = 1;
    d1[1] = 1;
    d2[1] = 2;
    for(i = 3; i <= n; ++i) {
        adunare(d1, d2, d3);
        memcpy(d1, d2, sizeof(d2));
        memcpy(d2, d3, sizeof(d3));
    }
    for(i = d3[0]; i >= 1; --i)
        printf("%d", d3[i]);
    return 0;
}