Cod sursa(job #63106)

Utilizator risenshineAkil Nasser risenshine Data 26 mai 2007 16:42:33
Problema Patrate2 Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>
#include <time.h>
#define NMAX 500
#define B 10000

int N;
int a[NMAX], b[NMAX];

void mul(int a[NMAX], int n) {
	int i, t = 0;
	for (i = 1; i <= a[0] || t; ++i, t/=B)
		a[i] = (t += a[i] * n) % B;
	a[0] = i-1;
}
void write(int a[NMAX]) {
	int i;
	printf("%d", a[a[0]]);
	for (i = a[0]-1; i; --i) {
		if (a[i] / 1000 == 0)
			printf("0");
		if (a[i] / 100 == 0)
			printf("0");
		if (a[i] / 10 == 0)
			printf("0");
		printf("%d", a[i]);
	}
	printf("\n");
}
int main() {
	int i;
	clock_t begin, end;
	freopen("patrate2.in", "r", stdin);
	freopen("patrate2.out", "w", stdout);
	a[0] = a[1] = 1;
	scanf("%d", &N);
	begin = clock();
	for (i = 1; i <= N; ++i)
		mul(a, i);
	for (i = 1; i+16 <= N*N; i+=16)
		mul(a, (1<<16));
	for (; i <= N*N; ++i)
		mul(a, 2);
	//for (i = a[0]; i; --i)
	//	printf("%d ", a[i]);
	write(a);
	end = clock();
	//printf("%d\n", end - begin);
	//printf("%d ", b[0]);
}