Pagini recente » Cod sursa (job #1481064) | Cod sursa (job #458596) | Cod sursa (job #423937) | Cod sursa (job #355534) | Cod sursa (job #2787712)
#include <stdio.h>
#define BASE 10000
#define MAX 2067
#define POW 30
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;
}