Cod sursa(job #147566)

Utilizator savimSerban Andrei Stan savim Data 3 martie 2008 10:46:56
Problema Patrate2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
//numarul de patrate = 2^(n*n-1)* (2^n*n!)
#include <stdio.h>
#define l 455
#define b 10000000
long n,i,j;
long nr[l+10];
int main()
{


		freopen("patrate2.in","r",stdin);
		freopen("patrate2.out","w",stdout);

		scanf("%ld",&n);
		nr[l]=1;
		//calculez 2^(n*n-n)*2^n
		for (i=1; i<=n*n; i++)
		{
				for (j=l; j>=1; j--)
						nr[j]*=2;
				for (j=l; j>=1; j--)
				{
						nr[j-1]+=nr[j]/b;
						nr[j]%=b;
				}
		}
		//calculez n!
		for (i=1; i<=n; i++)
		{
				for (j=l; j>=1; j--)
						nr[j]*=i;
				for (j=l; j>=1; j--)
				{
						nr[j-1]+=nr[j]/b;
						nr[j]%=b;
				}
		}
		for (i=1; i<=l; i++)
				if (nr[i]!=0)
				{
						j=i;
						break;
				}
		printf("%ld",nr[j]);
		for (i=j+1; i<=l; i++)
		{
				long cop=nr[i];
				if (cop!=0)
				while (cop<b/10)
				{
						printf("0");
						cop*=10;
				}
				else printf("000000");
				printf("%ld",nr[i]);
		}
		printf("\n");

		return 0;
}