Cod sursa(job #120564)

Utilizator slayer4uVictor Popescu slayer4u Data 5 ianuarie 2008 21:24:20
Problema Nunta Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#include <string.h>

const long SIZE = 1000;

long n, i, ant[SIZE], ant2[SIZE], curent[SIZE];

void copy(long a[], long b[])
{
	memset(a, 0, sizeof(a));
	for (long i = 0; i <= b[0]; i ++)
		a[i] = b[i];
}

void add(long A[], long 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;
}

int main()
{
	freopen ("nunta.in", "rt", stdin);
	freopen ("nunta.out", "wt", stdout);

	scanf("%ld", &n);

	if (n == 2 && n == 1)
	{
		printf("1\n");
		return 0;
	}

	ant2[0] = ant2[1] = ant[0] = ant[1] = 1;

	for (i = 2; i <= n; i ++)
	{
		memset(curent, 0, sizeof(curent));
		add(curent, ant2);
		add(curent, ant);
		copy(ant2, ant);
		copy(ant, curent);
	}

	for (i = curent[0]; i >= 1; i --)
		printf("%ld", curent[i]);

	printf("\n");
	return 0;
}