Cod sursa(job #797240)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 13 octombrie 2012 17:26:21
Problema Patrate2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<fstream>
#include<cstdio>
using namespace std;
int n,sol[10000]; //sol=N!*(2^(N*N))

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

int main()
{
	ifstream fin("patrate2.in");
	fin>>n;
	fin.close();
	
	int i,r;
	sol[0]=sol[1]=1;
	for(i=2;i<=n;i++)
		Inmulteste(sol,i);
	n=n*n;
	r=n%17;
	n/=17;
	for(i=1;i<=n;i++)
		Inmulteste(sol,(1<<17));
	for(i=1;i<=r;i++)
		Inmulteste(sol,2);
	
	freopen("patrate2.out","w",stdout);
	printf("%d",sol[sol[0]]);
	for(i=sol[0]-1;i>0;i--)
		printf("%04d",sol[i]);
	printf("\n");
	return 0;
}