Pagini recente » Cod sursa (job #371136) | Cod sursa (job #390551) | Cod sursa (job #1839415) | Cod sursa (job #56035) | Cod sursa (job #2399260)
#include <bits/stdc++.h>
using namespace std;
ifstream f("patrate2.in");
ofstream g("patrate2.out");
///N!*2^(n^2)
class Big
{
public:
int H[5000],base=10;
Big(uint64_t X)
{
H[0]=0;
while(X)
{
H[++H[0]]=X%base;
X/=base;
}
}
Big(const Big& B)
{
H[0]=B.H[0];
for(int i=1;i<=H[0];i++) H[i]=B.H[i];
}
int& operator[](int n){return H[n];}
Big operator *(uint64_t n)
{
Big B=*this;
uint64_t t=0;
for(int i=1;i<=B.H[0];i++)
{
B[i]=B[i]*n+t;
t=B[i]/base;
B[i]=B.H[i]%base;
}
while(t)
{
B[++B[0]]=t%base;
t/=base;
}
return B;
}
Big operator *(Big B)
{
int t=0;
Big C(0);
C.H[0]=B.H[0]+H[0]-1;
for(int i=1;i<=H[0]+B[0];) C[i++]=0;
for(int i=1;i<=H[0];i++)
for(int j=1;j<=B[0];j++)
C[i+j-1]+=H[i]*B[j];
for (int i=1;i<=C[0];i++)
{
t=(C[i]+=t)/base;
C[i]%=base;
}
if (t) C[++C[0]]=t;
return C;
}
};
Big fact(int n)
{
if(n==0) return Big(1);
return fact(n-1)*n;
}
Big pow(Big a,int n)
{
Big m(1);
if(n==0) return Big(1);
if(n%2==0)
{
m=pow(a,n/2);
return m*m;
}
return a*pow(a,n-1);
}
ostream& operator << (ostream&o,Big B)
{
for(int i=B.H[0];i>=1;i--) o<<B.H[i];
return o;
}
int main()
{
int N; f>>N;
g<<fact(N)*pow(Big(2),N*N);
return 0;
}