Pagini recente » Cod sursa (job #2495367) | Cod sursa (job #613525) | Cod sursa (job #1513384) | Cod sursa (job #2070030) | Cod sursa (job #794014)
Cod sursa(job #794014)
#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=1000000;
const int HUGEINT_DIGITS=6;
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_BASE,++i)
{
A[i]=(t+=A[i]*b)%HUGEINT_BASE;
}
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[i])
{
fout<<A[i];
}
}
}
inline void DWrite(HUGEINT A)
{
cout<<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)
{
cout<<"0";
}
if(A[i])
{
cout<<A[i];
}
}
cout<<"\n";
}
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;
}