Pagini recente » Cod sursa (job #1677764) | Cod sursa (job #1910070) | Cod sursa (job #1530488) | Cod sursa (job #973738) | Cod sursa (job #794007)
Cod sursa(job #794007)
#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;
const int HUGEINT_BASE=10000;
const int HUGEINT_DIGITS=4;
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/=HUGEINT_SIZE,++i)
{
A[i]=(t+=A[i]*b)%HUGEINT_SIZE;
}
A[0]=i-1;
}
inline void Write(HUGEINT A)
{
fout<<A[A[0]];
for(register int i=A[0]-1;i>0;--i)
{
int t=A[i];
int nrc=0;
while(t)
{
t/=10;
++nrc;
}
nrc=HUGEINT_DIGITS-nrc;
for(register int j=0;j<nrc;++j)
{
fout<<"0";
}
if(A[0])
{
fout<<A[0];
}
}
}
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;
}