Pagini recente » Cod sursa (job #2401542) | Cod sursa (job #2254821) | Cod sursa (job #637681) | Cod sursa (job #3174575) | Cod sursa (job #2787719)
#include <stdio.h>
#define BASE 10000
#define MAX 795
#define POW 46
#define POW1 15
int a[ MAX ];
int n;
void inmultesc( int v[], long long 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[], long long 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, 2LL * i );
int right = n * n - i + 1;
put( a, ( 1LL << POW ), right / POW );
right %= POW;
put( a, ( 1LL << POW1 ), right / POW1 );
put( a, 2LL, right % POW1 );
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;
}