Cod sursa(job #704074)
#include<stdio.h>
#include<string.h>
FILE *f , *g ;
int n , v[1000000] , p;
void citire();
void solve();
void tipar();
void mul(int v[] ,int x);
int main()
{
citire();
solve();
tipar();
return 0;
}
void citire()
{
f=fopen("patrate2.in" , "r" );
fscanf(f , "%d" , &n );
fclose(f);
}
void mul(int v[] , int x )
{
int t = 0 ,i;
for(i = 1 ; i<= v[0] || t ; i++ , t/=10 )
{
v[i] = (t+=v[i]*x)%10;
}
v[0] = i-1;
}
void solve()
{
v[0] = v[1] = 1;
p = n*n ;
if(n%2 == 0)
for(int i = 1 ; i<=p/4 ; ++i )
mul(v,16);
else
for(int i = 1 ; i<= p ; ++i )
mul(v,2);
for(int i = 1 ; i<= n ; ++i)
mul(v,i);
}
void tipar()
{
g=fopen("patrate2.out" , "w" );
while(v[0])fprintf(g , "%d" , v[v[0]--]);
fclose(g);
}