Pagini recente » Cod sursa (job #2841293) | Cod sursa (job #735150) | Cod sursa (job #1263592) | Cod sursa (job #1969746) | Cod sursa (job #80949)
Cod sursa(job #80949)
#include<stdio.h>
#include<string.h>
int nr[10000],fac[10000],aux[10000];
int main(){
freopen("patrate2.in","r",stdin);
freopen("patrate2.out","w",stdout);
int n,i,j,ax,t;
scanf("%d",&n);
nr[0]=1;
nr[1]=2;
for(j=1;j<n;j++){
for (i = 1,t=0; i <= nr[0] || t; i++, t /= 10)
nr[i] = (t += nr[i] * 2) % 10;
nr[0] = i - 1;
}
for(i=0;i<=nr[0];i++)
aux[i]=nr[i];
for(ax=1;ax<n;ax++){
memset(fac, 0, sizeof(fac));
for (i = 1; i <= nr[0]; i++){
for (t=0, j=1; j <= aux[0] || t; j++, t/=10)
fac[i+j-1]=(t+=fac[i+j-1]+nr[i]*aux[j])%10;
if (i + j - 2 > fac[0])
fac[0] = i + j - 2;
}
memcpy(nr, fac, sizeof(fac));
}
memset(fac,0,sizeof(fac));
fac[0]=fac[1]=1;
for(j=1;j<=n;j++){
for (i = 1,t=0; i <= fac[0] || t; i++, t /= 10)
fac[i] = (t += fac[i] * j) % 10;
fac[0] = i - 1;
}
memset(aux, 0, sizeof(aux));
for (i = 1; i <= nr[0]; i++){
for (t=0, j=1; j <= fac[0] || t; j++, t/=10)
aux[i+j-1]=(t+=aux[i+j-1]+nr[i]*fac[j])%10;
if (i + j - 2 > aux[0]) aux[0] = i + j - 2;
}
for(i=aux[0];i>0;i--)
printf("%d",aux[i]);
printf("\n");
return 0;
}