Pagini recente » Cod sursa (job #1427963) | Cod sursa (job #2049834) | Cod sursa (job #2816357) | Cod sursa (job #1775646) | Cod sursa (job #177039)
Cod sursa(job #177039)
#include <stdio.h>
long n,i,j,p[800],f[45],r,t;
long l,q,lmax,rez[900],baza=10000;
void output(long x,long nr0){
if (x==0){printf("0000");return;}
if (rez[i]>x){
for (int j=0;j<nr0;j++)printf("0");
printf("%ld",rez[i]);
}
else output(x/10,nr0+1);
}
int main(){
freopen ("patrate2.in","r",stdin);
freopen ("patrate2.out","w",stdout);
scanf ("%ld",&n);
p[1]=1;l=1;
t=n*n;
for (i=1;i<=t;++i){
r=0;
for (j=1;j<=l;++j){
p[j]+=p[j]+r;
r=p[j]/baza;
p[j]%=baza;
}
while(r){
l++;
p[l]=r%baza;
r/=baza;
}
}
f[1]=1;q=1;
for (i=2;i<=n;i++){
r=0;
for (j=1;j<=q;j++){
f[j]=f[j]*i+r;
r=f[j]/baza;
f[j]-=r*baza;
}
while (r){
q++;
f[q]=r%baza;
r/=baza;
}
}
//printf("%ld\n",q);
for (i=1;i<=l;i++)
for (j=1;j<=q;j++){
rez[i-1+j]+=p[i]*f[j];
}
lmax=l+q-1;
for (i=1;i<=lmax;i++){
rez[i+1]+=rez[i]/baza;
rez[i]%=baza;
}
r=rez[lmax+1];
while (r){
lmax++;
rez[lmax]=r%baza;
r/=baza;
}
printf("%ld",rez[lmax]);
for (i=lmax-1;i;i--)
output(baza/10,0);
printf("\n");
return 0;
}