Cod sursa(job #2699311)

Utilizator LucaMihaiLM10Luca Ilie LucaMihaiLM10 Data 24 ianuarie 2021 09:46:38
Problema Patrate2 Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <stdio.h>
#define MAX_CIF 3169

char v[MAX_CIF];

void set( char a[], int *n, int x ) {
    int i;

    if ( x == 0 ) {
        a[0] = 0;
        *n = 1;
    } else {
        for ( i = 0; i < *n; i++ )
            a[i] = 0;
        *n = 0;
        while ( x ) {
            a[*n] = x % 10;
            x /= 10;
            (*n)++;
        }
    }
}

void mult( char a[], int *n, int x ) {
    int t, i;

    if ( x == 0 ) {
        a[0] = 0;
        *n = 1;
    } else {
        t = 0;
        for ( i = 0; i < *n; i++ ) {
            t += a[i] * x;
            a[i] = t % 10;
            t /= 10;
        }

        while ( t > 0 ) {
            a[i] = t % 10;
            t /= 10;
            i++;
        }

        if ( i > *n )
            *n = i;
    }
}

void print( char a[], int n, FILE *fout ) {
    int i;
    for ( i = n - 1; i >= 0; i-- )
        fputc( a[i] + '0', fout );
}

int main() {
    FILE *fin, *fout;
    int n, ncif, i;

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

    ncif = MAX_CIF - 1;
    set( v, &ncif, 1 );
    for ( i = 2; i <= n; i++ )
        mult( v, &ncif, i );
    for ( i = 0; i < n * n; i++ )
        mult( v, &ncif, 2 );

    fout = fopen( "patrate2.out", "w" );
    print( v, ncif, fout );
    fclose( fout );
    return 0;
}