Cod sursa(job #2786250)

Utilizator andrei_marciucMarciuc Andrei andrei_marciuc Data 20 octombrie 2021 16:29:33
Problema Patrate2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <stdio.h>

#define BASE 1000
#define MAX 10421

int a[ MAX ];
int n; 

void inmultesc( int v[], int a ) {
    long long t = 0;
    for( int i = 1; i <= v[ 0 ]; i++ ) {
        v[ i ] = v[ i ] * a + t;
        t = v[ i ] / BASE;
        v[ i ] %= BASE;
    }

    while( t ) {
        v[ ++v[ 0 ] ] = t % BASE;
        t /= BASE;
    }
}

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;
    for( ; i <= right; i++ )
        inmultesc( a, 2 );

    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 / 100 )
            fprintf( fout, "00" );
        else if( a[ i ] < BASE / 10 )
            fprintf( fout, "0" );
        fprintf( fout, "%d", a[ i ] );
    }
    fclose( fout );
    return 0;
}