Pagini recente » Cod sursa (job #203123) | Cod sursa (job #2564188) | Cod sursa (job #2982546) | Cod sursa (job #1934671) | Cod sursa (job #1093176)
//PATRATE2- INFOARENA
#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;
}
//Inmultire 2 nr. mari
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 f("patrate2.in");
ofstream g("patrate2.out");
int n,i;
f>>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)
g<<c[i];
else
if(c[i]>=10)
g<<0<<c[i];
else
g<<0<<0<<c[i];
}
else
g<<c[i];
}
return 0;
}