Pagini recente » Cod sursa (job #1249177) | Cod sursa (job #3210795) | Cod sursa (job #2773559) | Cod sursa (job #877758) | Cod sursa (job #2378394)
#include <fstream>
using namespace std;
ifstream fin("patrate2.in");
ofstream fout("patrate2.out");
int pow[4000],i,N,j,aux,fact[200],val[1000001];
int main()
{
fin>>N; pow[0]=1; pow[1]=2;
//de determinat 2^(N*N) * N!
//putere a lui 2
for(i=2;i<=N*N;i++){ aux=0;
for(j=1;j<=pow[0];j++){
pow[j]*=2; pow[j]+=aux; aux/=10;
aux+=pow[j]/10;
pow[j]%=10;
}
if(aux){pow[0]++;
pow[pow[0]]=aux;
}
// for(j=1;j<=pow[0];j++)fout<<pow[j]; fout<<'\n';
}
// factorial
//
fact[0]=fact[1]=1;
for(i=2;i<=N;i++){ aux=0;
for(j=1;j<=fact[0];j++){
fact[j]*=i; fact[j]+=(aux%10); aux/=10;
aux+=fact[j]/10;
fact[j]%=10;
}
while(aux){fact[0]++;
fact[fact[0]]=aux%10;
aux/=10;
}
//// for(j=1;j<=fact[0];j++)fout<<fact[j]; fout<<'\n';
}
//inmultire factorial cu 2^(N^N)
//
val[0]=fact[0]+pow[0]-1; aux=0;
for(i=1;i<=fact[0];i++)
for(j=1;j<=pow[0];j++)
val[i+j-1]+=fact[i]*pow[j];
for(i=1;i<=val[0];i++){
val[i]+=(aux%10); aux/=10;
aux+=val[i]/10;
val[i]%=10;
}
while(aux){val[0]++;
val[val[0]]=aux%10; aux/=10;}
for(i=val[0];i>=1;i--)fout<<val[i];
return 0;
}