Pagini recente » Cod sursa (job #2107326) | Cod sursa (job #3282852) | Cod sursa (job #76658) | Cod sursa (job #2877843) | Cod sursa (job #2787714)
#include <stdio.h>
#define BASE 10000
#define MAX 2067
#define POW 27
int a[ MAX ];
int n;
void inmultesc( int v[], int a ) {
long long t = 0;
for( int i = 1; i <= v[ 0 ]; i++ ) {
t += ( long long )v[ i ] * a;
v[ i ] = t % BASE;
t /= BASE;
}
while( t ) {
v[ ++v[ 0 ] ] = t % BASE;
t /= BASE;
}
}
void put( int v[], int aa, int b ) {
for( int i = 1; i <= b; i++ )
inmultesc( v, aa );
}
int main()
{
FILE *fin = fopen( "patrate2.in", "r" );
fscanf( fin, "%d", &n );
fclose( fin );
int i;
a[ ++a[ 0 ] ] = 2;
for( i = 2; i <= n; i++ )
inmultesc( a, i * 2 );
int right = n * n - i + 1;
put( a, ( 1LL << POW ), right / POW );
put( a, 2, right % POW );
FILE *fout = fopen( "patrate2.out", "w" );
fprintf( fout, "%d", a[ a[ 0 ] ] );
for( int i = a[ 0 ] - 1; i > 0; i-- ) {
//for( int b = BASE; b / 10 >= a[ i ]; b /= 10 )
// fprintf( fout, "0" );
if( a[ i ] < BASE / 1000) {
fprintf( fout, "000" );
} else if( a[ i ] < BASE / 100 )
fprintf( fout, "00" );
else if( a[ i ] < BASE / 10 )
fprintf( fout, "0" );
fprintf( fout, "%d", a[ i ] );
}
fclose( fout );
return 0;
}