Pagini recente » infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #2329342) | Cod sursa (job #160723) | Cod sursa (job #2741562) | Cod sursa (job #2699311)
#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;
}