Cod sursa(job #995131)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 7 septembrie 2013 16:43:51
Problema Nunta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <cstdio>

using namespace std;

int n,a[220],b[220],lena,lenb;

inline void Read()
{
    freopen ("nunta.in","r",stdin);
    scanf("%d", &n);
}

inline void Adunare(int a[], int &n, int b[], int m)
{
    int i,x,rest,k;
    if(n>m)
        k=n;
    else
        k=m;
    rest=0;
    for(i=1;i<=k;i++)
    {
        x=a[i]+b[i]+rest;
        if(x>9)
        {
            a[i]=x-10;
            rest=1;
        }
        else
        {
            a[i]=x;
            rest=0;
        }
    }
    n=k;
    while(rest)
    {
        a[++n]=rest%10;
        rest/=10;
    }
}

inline void Solve()
{
    freopen ("nunta.out","w",stdout);
    int i,j,maxim,aux;
    lena=1;a[1]=0;
    lenb=1;b[1]=1;
    for(i=1;i<=n;i++)
    {
        Adunare(a,lena,b,lenb);
        if(lena>lenb)
            maxim=lena;
        else
            maxim=lenb;
        for(j=1;j<=maxim;j++)
        {
            aux=a[j];
            a[j]=b[j];
            b[j]=aux;
        }
        aux=lena;
        lena=lenb;
        lenb=aux;
    }
    for(i=lenb;i>=1;i--)
        printf("%d", b[i]);
    printf("\n");
}

int main()
{
    Read();
    Solve();
    return 0;
}