Cod sursa(job #517875)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 30 decembrie 2010 01:50:02
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <cstdio>
#include <cstring>

#define file_in "nunta.in"
#define file_out "nunta.out"

int n;
int a[10100];
int b[10100];
int c[10100];

void citire()
{
	//freopen(file_in,"r",stdin);
	//freopen(file_out,"w",stdout);
	
	scanf("%d",&n);
}

#define baza 1000

void scrie(int a[])
{
	int i;
	
	printf("%d", a[a[0]]);
	for (i=a[0]-1;i>=1;--i)
		 printf("%03d", a[i]);
}

void inm(int a[],int cif)
{
	int i,t=0;
	for (i=1;i<=a[0] || t;++i,t/=baza)
		 a[i]=(t+=a[i]*cif)%baza;
	a[0]=i-1;
}

void add(int a[], int b[])
{
	int i,t=0;
	for (i=1;i<=a[0] || i<=b[0] || t;++i,t/=baza)
		 a[i]=(t+=a[i]+b[i])%baza;
	a[0]=i-1;
}
  
void mul(int A[], int B[], int C[])
{
      int i,j,t;
       for (i = 1; i <= A[0]; i++)
      {
              for (t=0, j=1; j <= B[0] || t; j++, t/=baza)
                      C[i+j-1]=(t+=C[i+j-1]+A[i]*B[j])%baza;
              if (i + j - 2 > C[0]) C[0] = i + j - 2;
      }
}


void solve()
{
	int i;
		//..baga fibonacciu
		a[0]=a[1]=1;
		b[0]=1;
		b[1]=2;
		for(i=3;i<=n;++i)
		{
			memcpy(c,b,sizeof(b));
			add(b,a);
			memcpy(a,c,sizeof(c));
		}
		scrie(b);
}

int main()
{
	citire();
	if (N==1)
		printf("1\n");
	else
	solve();
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
	
}