Cod sursa(job #645764)

Utilizator SchumiDumitru Andrei Georgian Schumi Data 10 decembrie 2011 14:50:46
Problema Nunta Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>

using namespace std;

int d[1000][300];
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);
    d[1][0] = 1;
    d[2][0] = 1;
    d[1][1] = 1;
    d[2][1] = 2;
    for(i = 3; i <= n; ++i)
        adunare(d[i-1], d[i-2], d[i]);
    for(i = d[n][0]; i >= 1; --i)
        printf("%d", d[n][i]);
    return 0;
}