Pagini recente » Cod sursa (job #2505143) | Cod sursa (job #588282) | Cod sursa (job #700497) | Cod sursa (job #830773) | Cod sursa (job #1100361)
#include<stdio.h>
#define DIM 10002
FILE *f=fopen("patrate2.in","r"), *g=fopen("patrate2.out","w");
long int n, m, sol[DIM], doi[DIM], nr[DIM], z[DIM];
// n! * 2^(n*n)
void afisare(long int a[]){
long int i;
for(i=a[0];i>=1;i--) fprintf(g,"%ld",a[i]);
fprintf(g,"\n");
}
void inmultire( long int x[], long int y[] ){
long int px, py, i, t;
for(i=0;i<=x[0]+y[0]-1;i++)z[i]=0;
for( py=1; py <= y[0]; py++ ){
for( px=1; px<= x[0]; px++ ){
z[px+py-1]+= (y[py]*x[px]);
}
}
z[0]= x[0]+y[0]-1; t=0;
for(i=1;i<=z[0];i++){
z[i]+=t;
t=z[i]/10;
z[i]%=10;
}
while( t>0 ){
z[ ++z[0] ]= t%10; t/=10;
}
}
void daval(long int x[], long int y[]){
long int i;
for(i=0;i<=y[0];i++) { x[i]=y[i]; }
}
void putere_2(long int exp){
doi[0]=1; doi[1]=2;
while( exp > 0 ){
if( exp%2==1 ) { inmultire( sol, doi ); daval( sol, z); }
inmultire( doi, doi ); daval( doi, z );
exp/=2;
}
}
int main(){
fscanf(f,"%ld\n",&n); sol[0]=1; sol[1]=1;
putere_2(n*n);
for(long int ii=2;ii<=n;ii++){
nr[0]=1; nr[1]=ii;
inmultire( sol, nr ); daval( sol, z );
}
afisare(sol);
return 0;
}