Cod sursa(job #1604229)

Utilizator CraiuAndrei Craiu Craiu Data 18 februarie 2016 08:13:39
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <bits/stdc++.h>

using namespace std;

char a[215], b[215], c[215];
int na, nb, nc;

void Aduna()
{
    short i, t, x;
    nc = nb;
    t = 0;
    for (i = 1; i <= nc; i++)
    {
        x = a[i] - '0' + b[i] - '0' + t;
        if (x < 10)
        {
            c[i] = (x + '0');
            t = 0;
        }
        else
        {
            c[i] = ((x - 10) + '0');
            t = 1;
        }
    }
    if (t == 1)
        c[++nc] = '1';
}

int main()
{
    short n;
    freopen("nunta.in", "r", stdin);
    //freopen("nunta.out", "w", stdout);
    ofstream fout("nunta.out");
    scanf("%hd", &n);
    if(n == 1) printf("1\n");
    else if(n == 2) printf("2\n");
    else
    {
        for(short i = 1; i <= 205; i++)
            a[i] = b[i] = c[i] = '0';
        a[206] = b[206] = c[206] = 0;
        a[1] = '1';
        b[1] = '2';
        na = nb = nc = 1;
        for(short i = 3; i <= n; i++)
            {
                Aduna();
                strcpy(a + 1, b + 1);
                na = nb;
                strcpy(b + 1, c + 1);
                nb = nc;
            }
    }
    for(short i = nc; i >= 1; i--)
        fout << c[i];
    return 0;
}