Cod sursa(job #645773)

Utilizator SchumiDumitru Andrei Georgian Schumi Data 10 decembrie 2011 14:58:18
Problema Nunta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 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[], int y[], int z[])
{
    int i;
    z[0] = 0;
    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);
    if(n == 1) {
        printf("1");
        return 0;
    }
    if(n == 2) {
        printf("2");
        return 0;
    }
    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;
}