Pagini recente » Cod sursa (job #1882655) | Cod sursa (job #3124149) | Cod sursa (job #1158523) | Cod sursa (job #83137) | Cod sursa (job #21301)
Cod sursa(job #21301)
#include <stdio.h>
#include <mem.h>
using namespace std;
#define in "patrate2.in"
#define out "patrate2.out"
#define NMAX 101
int a[5001], b[5001];
int n;
void Prod( int a[], int val );
void Prod2( int b[], int val );
void mul(int A[], int B[]);
void Prod( int a[], int val )
{
int i, t = 0;
for ( i = 1; i <= a[0] || t; i++, t /= 10 )
{
a[i] = ( t += a[i] * val ) % 10;
}
a[0] = i - 1;
}
void Prod2( int b[], int val )
{
int i, t = 0;
for ( i = 1; i <= b[0] || t; i++, t /= 10 )
{
b[i] = ( t += b[i] * val ) % 10;
}
b[0] = i - 1;
}
void mul(int A[], int B[])
{
int i, j, t, C[10001];
memset(C, 0, sizeof(C));
for (i = 1; i <= A[0]; i++)
{
for (t=0, j=1; j <= B[0] || t; j++, t/=10)
C[i+j-1]=(t+=C[i+j-1]+A[i]*B[j])%10;
if (i + j - 2 > C[0]) C[0] = i + j - 2;
}
memcpy(A, C, sizeof(C));
}
int main()
{
freopen ( in, "r", stdin );
freopen ( out, "w", stdout );
int i;
scanf( "%d", &n );
a[0] = 1;
a[1] = 2;
for ( i = 1; i <= n*n-1; ++i )
{
Prod( a, 2 );
}
b[0] = 1;
b[1] = 1;
for ( i = 1; i <= n; ++i )
{
Prod2( b, i );
}
mul( a, b );
/*for ( i = b[0]; i >= 1; --i )
printf( "%d", b[i] );
printf( "\n" );
*/
for ( i = a[0]; i >= 1; --i )
printf( "%d", a[i] );
return 0;
}