Pagini recente » Cod sursa (job #948626) | Cod sursa (job #908638) | Cod sursa (job #208724) | Cod sursa (job #2802337) | Cod sursa (job #189366)
Cod sursa(job #189366)
#include<stdio.h>
#include<string.h>
char rez[3200],v[3200];
void invers(char *p){
int i,l=strlen(p);
char t;
for(i=0;i<l/2;i++)
{t=*(p+i);*(p+i)=*(p+l-i-1);*(p+l-i-1)=t;}
}
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);
invers(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);
invers(v);
printf("%s",v);
}
return 0;
}