Pagini recente » Istoria paginii utilizator/niculescuteodor | Cod sursa (job #1291224) | Diferente pentru preoni-2005/runda-1/solutii intre reviziile 12 si 13 | Istoria paginii runda/simulare-e4-2 | Cod sursa (job #2013126)
#include<fstream>
#include<bitset>
#include<cstring>
using namespace std;
ifstream fin("patrate2.in");
ofstream fout("patrate2.out");
int n,i;
int P[100001],F[10001];
void mul2(int A[], int B){
int i,t=0;
for(i=1;i<=A[0] || t;i++,t/=10)
A[i]=(t+=A[i]*B)%10;
A[0]=i-1;
}
void mul(int A[], int B[]){
int i,j,t, C[10010];
memset(C,0,sizeof(C));
for(i=1;i<=A[0];i++){
for(t=0,j=1;j<=B[0]||t;j++,t/=10)
C[i+j-1]=(t+=C[i+j-1]+A[i]*B[j])%10;
if(i+j-2>C[0])
C[0]=i+j-2;
}
memcpy(A,C,sizeof(C));
}
int main(){
fin>>n;
P[0]=1;
P[1]=1;
for(i=1;i<=n*n;i++)
mul2(P,2);
F[0]=1;
F[1]=1;
for(i=2;i<=n;i++)
mul2(F,i);
mul(P,F);
for(i=P[0];i>=1;i--)
fout<<P[i];
return 0;
}