Cod sursa(job #797221)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 13 octombrie 2012 17:15:19
Problema Patrate2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<fstream>
using namespace std;
int n;
long long sol[1000000]; //sol=N!*(2^(N*N))

inline void Inmulteste(long long A[],long long B)
{
	int i;
	long long t=0LL;
	for(i=1;i<=A[0] || t;i++,t/=1000000000)
		A[i]=(t+=A[i]*B)%1000000000;
	A[0]=i-1;
}

inline int NrCif(int x)
{
	if(x==0)
		return 1;
	int rez=0;
	while(x)
	{
		x/=10;
		rez++;
	}
	return rez;
}

int main()
{
	ifstream fin("patrate2.in");
	fin>>n;
	fin.close();
	
	int i,j,nr;
	sol[0]=sol[1]=1;
	for(i=2;i<=n;i++)
		Inmulteste(sol,(long long)i);
	n=n*n;
	for(i=1;i<=n;i++)
		Inmulteste(sol,2LL);
	
	ofstream fout("patrate2.out");
	fout<<sol[sol[0]];
	for(i=sol[0]-1;i>0;i--)
	{
		nr=NrCif(sol[i]);
		for(j=nr+1;j<=9;j++)
			fout<<0;
		fout<<sol[i];
	}
	fout<<"\n";
	fout.close();
	return 0;
}