Cod sursa(job #188417)

Utilizator Omega91Nicodei Eduard Omega91 Data 8 mai 2008 11:20:42
Problema Patrate2 Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>
#include <math.h>
const int B = 10000;
class nr_mare {
	int * x, l, SIZE;
	public:
		nr_mare() {
			int i;
			SIZE = 20000;
			x = new int[SIZE];
			x[0] = 1;
			for (i = 1; i < SIZE; ++i)
				x[i] = 0;
			l = 1;
		}
		~nr_mare() { delete[] x; }
		void inmultire(int k) {
			int t;
			t = 0;
			int i;
			for (i = 0; i <= l; ++i) {
				x[i] = x[i] * k + t;
				t = x[i] / B;
				x[i] %= B;
			}
			if ( x[i - 2] ) ++l;
		}
		void afisare(FILE *f) {
			int i;
			for (i = l + 1; !x[i]; --i) ;
			for (; i >= 0; --i) {
				if (x[i] < 1000 && x[i + 1]) {
					if (x[i] > 99) fprintf(f, "0");
					else if (x[i] > 9) fprintf(f, "00");
					else fprintf(f, "000");
				}
				fprintf(f, "%d", x[i]);
			}
		}
};

int main()
{
	nr_mare x;
	int n, i;
	FILE *f1, *f2;
	f1 = fopen("patrate2.in", "r");
	f2 = fopen("patrate2.out", "w");
	fscanf(f1, "%d", &n);
	for (i = 1; i <= n * n; ++i) x.inmultire(2);
	for (i = 2; i <= n; ++i) x.inmultire(i);
	x.afisare(f2);
	fprintf(f2, "\n");
	fclose(f1);
	fclose(f2);
	return 0;
}