Cod sursa(job #496433)

Utilizator dushmiMihai-Alexandru Dusmanu dushmi Data 28 octombrie 2010 23:01:01
Problema Nunta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<cstdio>
typedef int Huge[1<<10];
Huge a,b,c;
void init()
{
    a[0]=a[1]=1;
    b[0]=b[1]=1;
}
void atrib(Huge A,Huge B)
{
    A[0]=B[0];
    for(int i=1;i<=B[0];i++)
        A[i]=B[i];
}
void reset(Huge A)
{
    for(int i=1;i<=A[0];i++)
        A[i]=0;
    A[0]=0;
}
void afis(Huge A)
{
    for(int i=A[0];i>=1;i--)
        printf("%d",A[i]);
}
void adun(Huge Rez,Huge A,Huge B)
{
    int i,T=0;
    for(i=1;i<=A[0] || i<=B[0] || T;i++)
    {
        Rez[i]=A[i]+B[i]+T;
        T=Rez[i]/10;
        Rez[i]%=10;
    }
    Rez[0]=i-1;
}
void solve(int n)
{
    for(int i=2;i<=n;i++)
    {
        reset(c);
        adun(c,a,b);
        atrib(a,b);
        atrib(b,c);
    }
    afis(c);
}
int main()
{
    freopen("nunta.in","r",stdin);
    freopen("nunta.out","w",stdout);
    int n;
    scanf("%d",&n);
    if(n==1)
        printf("1");
    else
    {
        init();
        solve(n);
    }
    return 0;
}