Cod sursa(job #794006)

Utilizator ChallengeMurtaza Alexandru Challenge Data 4 octombrie 2012 22:43:35
Problema Patrate2 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <iostream>

#define DEBUG

#ifndef DEBUG
	#define PRINT(x)
	#define D if(0)
#else
	#define PRINT(x) \
		cout<<#x<<":\t"<<x<<endl
	#define D if(1)
#endif

using namespace std;

const char InFile[]="patrate2.in";
const char OutFile[]="patrate2.out";
const int HUGEINT_SIZE=20111;

ifstream fin(InFile);
ofstream fout(OutFile);

typedef int HUGEINT[HUGEINT_SIZE];

int N;
HUGEINT A;

inline void MUL(HUGEINT A, int b)
{
	int i=1,t=0;
	for(;i<=A[0] || t;t/=10,++i)
	{
		A[i]=(t+=A[i]*b)%10;
	}
	A[0]=i-1;
}

inline void Write(HUGEINT A)
{
	for(register int i=A[0];i>0;--i)
	{
		fout<<A[i];
	}
}

int main()
{
	fin>>N;
	fin.close();

	PRINT(N);

	A[0]=A[1]=1;
	for(register int i=2;i<=N;++i)
	{
		MUL(A,i);
	}

	N*=N;
	for(register int i=1;i<=N;++i)
	{
		MUL(A,2);
	}

	Write(A);
	fout.close();
	return 0;
}