Cod sursa(job #477631)

Utilizator crushackPopescu Silviu crushack Data 15 august 2010 17:31:13
Problema Nunta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#include <string.h>
#define LMax 500

char const IN[]   ="nunta.in";
char const OUT[]  ="nunta.out";

int N;
int F1[LMax],F2[LMax],Aux[LMax];

void sum(int *a,int *b)
{
	int i,t;
	t=0;
	a[0]= (a[0]>b[0]) ? a[0] : b[0];
	for (i=1;i<=a[0];i++)
	{
		t= (a[i]=a[i]+b[i]+t)/10;
		a[i]%=10;
	}
	if (t)
		a[++a[0]]=t;
}

void Calc()
{
	int i;
	F1[0]=F1[1]=1;
	F2[0]=1;F2[1]=2;
	for (i=3;i<=N;i++)
	{
		memcpy(Aux,F2,sizeof(F2));
		sum(F2,F1);
		memcpy(F1,Aux,sizeof(F1));
	}
}

void scriere(int *a)
{
	int i;
	freopen(OUT,"w",stdout);
	for(i=a[0];i>0;i--)
		printf("%d",a[i]);
	printf("\n");
	fclose(stdout);
}

void citire()
{
	freopen(IN,"r",stdin);
	scanf("%d",&N);
	fclose(stdin);
}

int main()
{
	citire();
	Calc();
	if (N<=1)
		scriere(F1);
	else
		scriere(F2);
	return 0;
}