Cod sursa(job #1581607)

Utilizator tudormaximTudor Maxim tudormaxim Data 26 ianuarie 2016 22:15:08
Problema Nunta Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <cstdio>
using namespace std;
short int a[500], b[500];

int max(int a, int b)
{

    if(a >= b) return a;
    return b;
}

void aduna()
{
    short int t = 0,sum;
    int i;
    for(i = 1 ; i <= b[0] || i <= a[0]; i++)
    {
        sum = a[i] + b[i] + t;
        a[i] = sum % 10 ;
        t = sum / 10;
    }
    if(t)
    {
        a[0] = max(a[0],b[0]) + 1;
        a[a[0]] = t;
    }
    else a[0] = max(a[0],b[0]);
}

void afis(short int nr[])
{

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

void sw()
{
    for(short int i = 0 ; i <= max(a[0],b[0]) ; i++)
       {
           int tmp = a[i];
           a[i] = b[i];
           b[i] = tmp;
       }
}

int main()
{

    freopen("nunta.in", "r", stdin);
    freopen("nunta.out", "w", stdout);
    a[0] = a[1] = b[0] = b[1] = 1;
    int n;
    scanf("%d",&n);
    for(int i = 2 ; i <= n ; i++){
        aduna();
        sw();
    }
    afis(b);
    return 0;
}