Pagini recente » Cod sursa (job #1145540) | Cod sursa (job #2117345) | Cod sursa (job #2737564) | Cod sursa (job #217818) | Cod sursa (job #5079)
Cod sursa(job #5079)
#include <stdio.h>
#include <string.h>
#define PT(X) (X) * (X)
#define NMAX 401
int sqr_t[NMAX * NMAX];
int N, M, A, B, y;
void process()
{
int i;
for (i = 1; i < NMAX; i++) sqr_t[i * i] = i;
}
int calculate(int A, int B, int y)
{
int x1, x2;
int Delta = PT(B) - 4 * y * (A - y);
if (Delta < 0) return 0;
if (Delta == 0 || sqr_t[Delta])
{
x1 = (B - sqr_t[Delta])/2;
x2 = (B + sqr_t[Delta])/2;
if (x1 == x2) return (0 <= x1 && x1 < B);
else return (0 <= x1 && x1 < B) + (0 <= x2 && x2 < B);
}
return 0;
}
int main()
{
int Nr[NMAX][NMAX];
long long Sol = 0;
freopen("dreptunghiuri.in", "r", stdin);
freopen("dreptunghiuri.out", "w", stdout);
process();
scanf("%d %d", &N, &M); N--; M--;
for (A = 1; A <= N; A++)
for (B = 1; B <= M; B++)
{
if (A <= B || A > M)
{
Nr[A][B] = 0;
for (y = 0; y < A; y++)
Nr[A][B] += calculate(A, B, y);
} else Nr[A][B] = Nr[B][A];
Sol += (long long) Nr[A][B] * (N - A + 1) * (M - B + 1);
}
printf("%lld\n", Sol);
return 0;
}