Cod sursa(job #223170)

Utilizator cotofanaCotofana Cristian cotofana Data 27 noiembrie 2008 12:44:23
Problema Nunta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <stdio.h>

int n;

void attrib_int(int *a, int nr)
{
	if (!nr)
	{
		a[0]=1;
		a[1]=0;
	}
	a[0]=0;
	while (nr)
	{
		a[0]++;
		a[a[0]]=nr%10;
		nr/=10;
	}
}

void attrib_large(int *a, int *b)
{
	int i;
	b[0]=a[0];
	for (i=1; i<=a[0]; i++) b[i]=a[i];
}

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

int main()
{
	int a[10000], b[10000], c[10000], i;
	freopen("nunta.in", "r", stdin);
	freopen("nunta.out", "w", stdout);
	scanf("%d\n", &n);
	if (n==1 || n==2)
	{
		printf("%d\n", n);
		return 0;
	}
	n-=2;
	attrib_int(a, 1); //a=1;
	attrib_int(b, 2); //b=2;
	for (;n;n--)
	{
		sum(a, b, c); //c=a+b;
		attrib_large(b, a); //a=b;
		attrib_large(c, b); //b=c;
	}
	for (i=b[0]; i; i--) printf("%d", b[i]);
	return 0;
}