Pagini recente » Cod sursa (job #1981001) | Cod sursa (job #3174659) | Cod sursa (job #2987034) | Cod sursa (job #2223300) | Cod sursa (job #1065050)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int a[10000],b[10000],c[10000],rez[10000];
void inmultire2(int a[])
{
int i,t=0;
for(i=1;i<=a[0]||t;i++)
{
a[i]=a[i]*2+t;
t=a[i]/1000;
a[i]=a[i]%1000;
}
a[0]=i-1;
}
void inmultires(int a[],int m)
{
int i,t=0;
for(i=1;i<=a[0]||t;i++)
{
a[i]=a[i]*m+t;
t=a[i]/1000;
a[i]=a[i]%1000;
}
a[0]=i-1;
}
void inmultirem(int a[], int b[])
{
int i,j,t=0;
rez[0]=a[0];
memset(rez,0,sizeof(rez));
for(i=1;i<=a[0];i++)
{
for(j=1;j<=b[0]||t;j++)
{
rez[i+j-1]+=a[i]*b[j]+t;
t=rez[i+j-1]/1000;
rez[i+j-1]=rez[i+j-1]%1000;
}
if(i+j-2>rez[0])
rez[0]=i+j-2;
}
memcpy(a,rez,sizeof(rez));
}
int main()
{
ifstream fin("patrate2.in");
ofstream fout("patrate2.out");
int n,i;
fin>>n;
a[1]=1;
a[0]=1;
for(i=1;i<=n;i++)
inmultire2(a);
b[1]=1;
b[0]=1;
for(i=1;i<=n*(n-1);i++)
inmultire2(b);
inmultirem(a,b);
c[0]=1;
c[1]=1;
for(i=2;i<=n;i++)
inmultires(c,i);
inmultirem(c,a);
for(i=c[0];i>=1;i--)
{
if(i<c[0])
{
if(c[i]>=100)
fout<<c[i];
else
if(c[i]>=10)
fout<<0<<c[i];
else
fout<<0<<0<<c[i];
}
else
fout<<c[i];
}
return 0;
}