Pagini recente » Cod sursa (job #3273601) | Cod sursa (job #292962) | Cod sursa (job #585261) | Cod sursa (job #2706395) | Cod sursa (job #344497)
Cod sursa(job #344497)
#include <cstdio>
#include <cstring>
#include <math.h>
using namespace std;
int n, m, i, w, h, l1, l2, L1, L2, sol;
int a, b, c, nr;
int delta;
double x1, x2;
int rad[801 * 801];
int main() {
freopen("dreptunghiuri.in", "r", stdin);
freopen("dreptunghiuri.out", "w", stdout);
scanf("%d%d", &n, &m);
memset(rad, -1, sizeof(rad));
for (i = 0; i <= 800; i++)
rad[i * i] = i;
for (w = 2; w <= n; w++)
for (h = 2; h <= m; h++) {
nr = 0;
for (l1 = 0; l1 < h - 1; l1++) {
l2 = h - l1 - 1;
a = 2;
b = -2 * (w - 1);
c = 2 * l1 * l2;
delta = b * b - 4 * a * c;
if (delta < 0)
continue;
if (rad[delta] == -1)
continue;
delta = rad[delta];
x1 = 1.0 * (-b + delta) / 4.0;
x2 = 1.0 * (-b - delta) / 4.0;
if (x1 == (int)x1 && x1 > 0 && x1 < w)
nr++;
if (x2 != x1 && x2 == (int)x2 && x2 > 0 && x2 < w)
nr++;
}
sol += nr * (n - w + 1) * (m - h + 1);
}
printf("%d\n", sol);
return 0;
}