Cod sursa(job #115292)

Utilizator IoannaPandele Ioana Ioanna Data 16 decembrie 2007 12:03:11
Problema Nunta Scor 100
Compilator cpp Status done
Runda preONI 2008, Runda 2, Clasa a 9-a Marime 1.62 kb
#include<stdio.h>
int n;
long a[1500],b[1500];

void read()
{
scanf("%d",&n);
}

void rez()
{
int i,t,j;
a[0]=a[1]=1;
b[0]=b[1]=1;

for (i=2;i<=n;i++)
    {
    if (i%2==0)
       { t=0;
	if (a[0]>b[0])
	   {
	    for (j=1;j<=b[0];j++)
		{
		b[j]=b[j]+a[j]+t;
		t=b[j]/10;
		b[j]=b[j]%10;
	       }
	    for (j=b[0]+1;j<=a[0];j++)
		 {
		 b[j]=a[j]+t;
		 t=b[j]/10;
		 b[j]=b[j]%10;
		 }
	   if (t)
	     {b[0]=a[0]+1;
	     b[b[0]]=t;
	     }
	else b[0]=a[0];
	}
       else {
	    for (j=1;j<=a[0];j++)
		{
		b[j]=b[j]+a[j]+t;
		t=b[j]/10;
		b[j]=b[j]%10;
	       }
	    for (j=a[0]+1;j<=b[0];j++)
		 {
		 b[j]=b[j]+t;
		 t=b[j]/10;
		 b[j]=b[j]%10;
		 }
	   if (t)
	     {b[++b[0]]=t;
	     }
	}
       }
    else {t=0;
	if (a[0]<b[0])
	   {
	    for (j=1;j<=a[0];j++)
		{
		a[j]=b[j]+a[j]+t;
		t=a[j]/10;
		a[j]=a[j]%10;
	       }
	    for (j=a[0]+1;j<=b[0];j++)
		 {
		 a[j]=b[j]+t;
		 t=a[j]/10;
		 a[j]=a[j]%10;
		 }
	   if (t)
	     {a[0]=b[0]+1;
	     a[a[0]]=t;
	     }
	else a[0]=b[0];
	}
       else {
	    for (j=1;j<=b[0];j++)
		{
		a[j]=b[j]+a[j]+t;
		t=a[j]/10;
		a[j]=a[j]%10;
	       }
	    for (j=b[0]+1;j<=a[0];j++)
		 {
		 a[j]=a[j]+t;
		 t=a[j]/10;
		 a[j]=a[j]%10;
		 }
	   if (t)
	     {a[++a[0]]=t;
	     }
	}
       }
    }

}

void af()
{
int i;
if (n%2==0)
   {
   for (i=b[0];i>=1;i--)
       printf("%d",b[i]);
   }
else {
for (i=a[0];i>=1;i--)
       printf("%d",a[i]);
     }
}
int main()
{
freopen("nunta.in","r",stdin);
freopen("nunta.out","w",stdout);
read();
rez();
af();
fcloseall();
return 0;
}