Cod sursa(job #189365)

Utilizator nusmaibunkeleviprofesor cicalescu nusmaibunkelevi Data 14 mai 2008 05:02:45
Problema Patrate2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<stdio.h>
#include<string.h>

char rez[3200],v[3200];

void prod(char x[],long b){
long  r,i,carry=0,uc;
char ip[40];
for(i=0;i<40;i++) ip[i]=0;
int l=strlen(x);
for(i=0;i<l;i++){
	r=x[i]-48;
	r=r*b+carry;
	carry=r/10;
	uc=r%10;
	rez[i]=uc+48;
	}
	if(carry){
	sprintf(ip,"%ld",carry);
	strrev(ip);
	strcpy(rez+l,ip); }
	//strrev(rez);
	strcpy(x,rez);
}

int main(){
freopen("patrate2.in","r",stdin);
freopen("patrate2.out","w",stdout);
int n,i,n2;
unsigned long long r=1L,p2=1,f=1L;
long double x=1;
long p[32],y,z;
//char v[3200]={0};
v[0]=49;
scanf("%d",&n);
n2=n*n;
p[0]=1;
for(i=1;i<=31;i++) p[i]=p[i-1]*2;
if(n<8){
	for(i=2;i<=n;i++) f=f*i;
	for(i=1;i<=n2;i++) p2=p2*2;
	r=f*p2;
	printf("%llu",r);
	}
else{
	y=n2;
	do {
		if(y>=27) z=27;
		else z=y;
		prod(v,p[z]);
		y-=z;
	}while(y);
	for(i=2;i<=n;i++) prod(v,i);
	strrev(v);
	printf("%s",v);
	}
return 0;
}