Pagini recente » Cod sursa (job #962393) | Cod sursa (job #203051) | Cod sursa (job #2891214) | Cod sursa (job #2170933) | Cod sursa (job #424912)
Cod sursa(job #424912)
#include<cstdio>
#define Nmax 1000000
#define baza 10000
int a[Nmax],s[Nmax],c[Nmax],n,b,i,j,t,val,p;
void init(int c[])
{
int i,n=c[0];
for(i=n+1;i<Nmax;i++)
c[i]=0;
}
int main()
{
freopen("patrate2.in","r",stdin);
freopen("patrate2.out","w",stdout);
scanf("%d",&n);
b=n*n;
s[0]=s[1]=1;
a[0]=1; a[1]=2;
while(b)
{
if(b&1)
{
c[0]=0;
init(a); init(s); init(c);
c[0]=1;
for(i=1;i<=a[0];i++)
{
for(t=0,j=1;j<=s[0]||t;j++,t/=baza)
{
c[i+j-1]=(t+=c[i+j-1]+a[i]*s[j])%baza;
if(i+j-2>c[0]) c[0]=i+j-2;
}
}
for(i=1;i<=c[0];i++) s[i]=c[i];
s[0]=c[0];
}
c[0]=0;
init(a); init(s); init(c);
c[0]=1;
for(i=1; i<=a[0]; i++)
{
for(t=0,j=1;j<=a[0]||t;j++,t/=baza)
c[i+j-1]=(t+=c[i+j-1]+a[i]*a[j])%baza;
if(i+j-2>c[0]) c[0]=i+j-2;
}
for(i=1;i<=c[0];i++) a[i]=c[i];
a[0]=c[0];
b>>=1;
}
a[0]=1; a[1]=1;
for(b=1;b<=n;b++)
{
t=0;
for(i=1;i<=a[0]||t;i++,t/=baza)
a[i]=(t+=a[i]*b)%baza;
a[0]=i-1;
}
c[0]=0;
init(a); init(s); init(c);
c[0]=1;
for(i=1; i<=a[0]; i++)
{
for(t=0,j=1;j<=s[0]||t;j++,t/=baza)
c[i+j-1]=(t+=c[i+j-1]+a[i]*s[j])%baza;
if(i+j-2>c[0]) c[0]=i+j-2;
}
n=s[0];
for(i=0;i<=n;i++) s[i]=0;
n=c[0];
for(i=1;i<=n;i++)
{
if(c[i])
{
p=(i-1)*4;
val=c[i];
while(val)
{
s[++p]=val%10;
val/=10;
}
s[0]=p;
}
}
for(i=s[0];i>0;i--) printf("%d",s[i]);
return 0;
}