Pagini recente » Cod sursa (job #2524033) | Cod sursa (job #2144799) | Cod sursa (job #958219) | Cod sursa (job #2651350) | Cod sursa (job #2492938)
#include <iostream>
#include <fstream>
///Raspunsul este n!*(2^(n^2))
using namespace std;
ifstream f("patrate2.in");
ofstream g("patrate2.out");
struct Huge{
int a[100000];
};
void makeHuge(Huge &H, unsigned long X) {
H.a[0] = 0;
while (X) {
++H.a[0];
H.a[H.a[0]] = X % 10;
X /= 10;
}
}
void mult(Huge &H, unsigned long X)
{ int i;
unsigned long T=0;
for (i=1;i<=H.a[0];i++)
{ H.a[i]=H.a[i]*X+T;
T=H.a[i]/10;
H.a[i]=H.a[i]%10;
}
while (T)
{ H.a[++H.a[0]]=T%10;
T/=10;
}
}
void MultHuge(Huge &A, Huge &B, Huge &C)
{ int i,j,T=0;
C.a[0]=A.a[0]+B.a[0]-1;
for (i=1;i<=A.a[0]+B.a[0];) C.a[i++]=0;
for (i=1;i<=A.a[0];i++)
for (j=1;j<=B.a[0];j++)
C.a[i+j-1]+=A.a[i]*B.a[j];
for (i=1;i<=C.a[0];i++)
{ T=(C.a[i]+=T)/10;
C.a[i]%=10;
}
if (T) C.a[++C.a[0]]=T;
}
int main()
{
int n;
cin>>n;
Huge A;
Huge B;
Huge C;
makeHuge(A,1);
makeHuge(B,1);
for(int i=1;i<=n;i++){
mult(A,i);
}
for(int i=1;i<=n*n;i++){
mult(B,2);
}
MultHuge(A,B,C);
for(int i=C.a[0];i>=1;i--){
cout<<C.a[i];
}
return 0;
}