Cod sursa(job #4921)

Utilizator ProstuStefan-Alexandru Filip Prostu Data 8 ianuarie 2007 21:08:09
Problema Dreptunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>
#include <cstring>

const int NMAX = 401;

int N, M;
int SQ[NMAX * NMAX];
long long cnt;

void read() {
	FILE *fin = fopen("dreptunghiuri.in", "rt");

	fscanf(fin, " %d %d", &N, &M);

	fclose(fin);
}

void prepare() {
	int i;
	
	memset(SQ, 0xff, sizeof(SQ));

	for (i = 0; i < NMAX; ++i)
		SQ[i * i] = i;
}

void count() {
	int i, j, k, p, t;

	for (i = 1; i < N; ++i)
		for (j = 1; j < M; ++j) {
			for (k = p = 0; k < i; ++k)
				for (t = 0; t < M; ++t)
					if (t * t + k * (i - k) == j * t)
						++p, t = M;

			cnt += p * (N - i) * (M - j);
//			printf("%d %d %d %lld\n", i, j, p, cnt);
		}

}

void write() {
	FILE *fout = fopen("dreptunghiuri.out", "wt");

	fprintf(fout, "%lld\n", cnt);

	fclose(fout);
}

int main() {

	read();

	prepare();

	count();

	write();

	return 0;
}