Cod sursa(job #386855)

Utilizator MKLOLDragos Ristache MKLOL Data 26 ianuarie 2010 10:59:26
Problema Nunta Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<stdio.h>
int v1[256],S[256],v2[256],v3[256];
int v[256];
int N,done,o;

void suma(int sum[],int ad1[],int ad2[])
{
    int max=ad2[0];
    if(ad1[0]>max)
    max=ad1[0];
    for(int i=1;i<=max;++i)
    sum[i]=ad1[i]+ad2[i];
    for(int i=1;i<=max;++i)
    {
        if(sum[i]>9)
        {
            sum[i+1]=sum[i+1]+sum[i]/10;
            sum[i]=sum[i]%10;
            if(i+1>max)
            max=i+1;
        }
    }
    sum[0]=max;

}

void afiseaza(int x1[],int x2[])
{

    int max=x1[0];
    for(int i=x1[0];i>=1;--i)
    printf("%d",x1[i]);
    printf("\n");
}

int main()
{
freopen("nunta.in","r",stdin);
freopen("nunta.out","w",stdout);
scanf("%d",&N);
--N;
for(int i=N;i>=1;--i)
{
S[i]=v[N-i+1]-'0';
v[N-i+1]=0;
}
S[0]=N;
v1[1]=v1[0]=v2[1]=v2[0]=1;

o=0;

while(o<=N)
{


    if(o%3==0)
    {

    suma(v3,v1,v2);
    }
    if(o%3==1)
    {

    suma(v1,v2,v3);
    }
    if(o%3==2)
    {
    suma(v2,v3,v1);
    }


    ++o;
}

if(o%3==0)
{
    afiseaza(v1,v2);
}
if(o%3==1)
{
    afiseaza(v2,v3);
}
if(o%3==2)
{
 afiseaza(v3,v1);
}

return 0;
}