Cod sursa(job #842126)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 26 decembrie 2012 11:41:31
Problema Patrate2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<stdio.h>
#include<assert.h>
using namespace std;

#define NMAX 101
#define DIM 100000
#define BAZA 10000

int a[DIM];

inline void mult(int a[], int b)
{
	int i,r;
	for(i=1,r=0;i<=a[0] || r;i++) {
		r=a[i]*b+r;
		a[i]=r%BAZA;
		r=r/BAZA;
	}
	a[0]=i-1;
}

int main ()
{
	int n,i;
	assert(freopen("patrate2.in","r",stdin));
	assert(freopen("patrate2.out","w",stdout));
	assert(scanf("%d",&n));
	fclose(stdin);
	a[0]=1;
	a[1]=1;
	for(i=2;i<=n;i++)
		mult(a,i);
	for(i=1;i<=(n*n)/16;i++)
		mult(a,(1<<16));
	for(i=1;i<=((n*n)&15);i++)
		mult(a,2);
	printf("%d",a[a[0]]);
	for(i=a[0]-1;i>=1;i--)
		printf("%.4d",a[i]);
	printf("\n");
	fclose(stdout);
	return 0;
}