Cod sursa(job #1311974)

Utilizator radu_cebotariRadu Cebotari radu_cebotari Data 8 ianuarie 2015 19:36:23
Problema Nunta Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<cstdio>
using namespace std;

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

void afis(short int nr[])
{

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

int max(int a,int b)
{

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

void swap(short int &a,short int &b)
{

    int tmp;
    tmp = a;
    a = b;
    b = tmp;
}

void sw()
{

    for(short int i = 0 ; i <= max(a[0],b[0]) ; i++)
        swap(a[i],b[i]);

}

int main()
{

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