Cod sursa(job #177762)

Utilizator AndreyPAndrei Poenaru AndreyP Data 13 aprilie 2008 16:25:19
Problema Patrate2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<stdio.h>
#include<string.h>
int n,v[50000],v1[50000];
int main()
{
	freopen("patrate2.in","r",stdin);
	freopen("patrate2.out","w",stdout);
	scanf("%d",&n);
	v[0]=1;
	v[1]=1;
	int i,j,t;
	for(i=0; i<n; i++)
	{
		t=0;
		for(j=1; (j<=v[0])||(t); j++, t/=10)
			v[j]=(t+=v[j]<<1)%10;
		v[0]=j-1;
	}
	memset(v1, 0, sizeof(v1));
	for (i=1; i<=v[0]; i++)
	{
			for (t=0, j=1; j<=v[0] || t; j++, t/=10)
					v1[i+j-1]=(t+=v1[i+j-1]+v[i]*v[j])%10;
			if (i + j - 2 > v1[0]) 
				v1[0] = i + j - 2;
	}
	memcpy(v, v1, sizeof(v1));
	for(i=2; i<=n; i++)
	{
		t=0;
		for(j=1; (j<=v[0])||(t); j++, t/=10)
			v1[j]=(t+=v1[j]*i)%10;
		v1[0]=j-1;
	}
	for(i=v1[0]; i>0; i--)
		printf("%d",v1[i]);
	printf("\n");
	return 0;
}