Pagini recente » Cod sursa (job #1724922) | Cod sursa (job #1176391) | Cod sursa (job #404912) | Cod sursa (job #1783942) | Cod sursa (job #547735)
Cod sursa(job #547735)
#include <stdio.h>
#include <math.h>
int n, m, r[160005];
long long sol;
int main ()
{
freopen ("dreptunghiuri.in", "r", stdin);
freopen ("dreptunghiuri.out", "w", stdout);
scanf ("%d %d", &n, &m);
if (n < m)
n ^= m ^= n ^= m;
int i, j, k, nr, d;
for (i = 1; i <= 160000; i ++)
r[i] = sqrt (i);
for (i = 2; i < n; i ++)
for (j = 2; j < m; j ++)
{
nr = 0;
for (k = 1; k < j; k ++)
{
d = i * i - 4 * k * (j - k);
if (d < 0)
continue;
if (d == 0)
{
if (r[d] * r[d] != d)
continue;
nr += (i & 1) == 0;
continue;
}
if (r[d] * r[d] != d)
continue;
d = r[d];
if ((i ^ d) & 1)
continue;
if (d >= i)
continue;
nr += 2;
}
sol = sol + nr * (n - i) * (m - j);
}
sol = sol + (long long)n * (n - 1) / 2 * m * (m - 1) / 2;
printf ("%lld\n", sol);
return 0;
}