Cod sursa(job #1025458)

Utilizator Teodor94Teodor Plop Teodor94 Data 9 noiembrie 2013 23:47:52
Problema Patrate2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>

#define MAX_C 1000000

int ans[MAX_C];

void write( FILE *fout ) {
    for ( int i = ans[0]; i > 0; --i )
        fprintf( fout, "%d", ans[i] );
}

void multiply( int A[], int x ) {
    int i = 1, t = 0;
    while ( i <= A[0] || t ) {
        A[i] = ( t += A[i] * x ) % 10;
        t /= 10;
        ++i;
    }
    A[0] = i - 1;
}

void solve( int n ) {
    ans[0] = ans[1] = 1;
    for ( int i = 2; i <= n; ++i )
        multiply( ans, i );
    int power = n * n;
    for ( int i = 1; i <= power / 20; ++i )
        multiply( ans, 1024 * 1024 );
    for ( int i = 1; i <= power % 20; ++i )
        multiply( ans, 2 );
}

int main() {
    FILE *fin, *fout;

    fin = fopen( "patrate2.in", "r" );
    int n;
    fscanf( fin, "%d", &n );
    fclose( fin );

    solve( n );

    fout = fopen( "patrate2.out", "w" );
    write( fout );
    fclose( fout );
}