Cod sursa(job #191154)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 25 mai 2008 15:02:43
Problema Nunta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <cstdio>
#define IN "nunta.in"
#define OUT "nunta.out"
#define cifmax 400

int n;
int A[cifmax],X[cifmax],Y[cifmax];

void add(int A[], int B[])
{
    int i, t = 0;
    for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
        A[i] = (t += A[i] + B[i]) % 10;
    A[0] = i - 1;
}

void scan()
{
	freopen(IN, "r",stdin);
	freopen(OUT, "w",stdout);
	scanf("%d", &n);
}	

void solve()
{
	X[0]=Y[0]=Y[1]=1;
	X[1]=2; 
	if(n<3)
	{
		printf("%d\n", n);
		return;
	}	
	for(int i=3;i<=n;++i)
	{
		add(Y,X);
		for(int j=0;j<=Y[0]+1;++j)
			A[j]=Y[j];
		for(int j=0;j<=X[0]+1;++j)
			Y[j]=X[j];
		for(int j=0;j<=A[0]+1;++j)
			X[j]=A[j];
	}
	for(int i=A[0];i>=1;--i)
		printf("%d",A[i]);
	printf("\n");
}

int main()
{
	scan();
	solve();
	return 0;
}