Pagini recente » Cod sursa (job #1747880) | Cod sursa (job #1561637) | Cod sursa (job #1322626) | Cod sursa (job #297920) | Cod sursa (job #1150174)
#include <cstdio>
#include <cstdlib>
using namespace std;
const int NMAX = 1010;
int N, M, Sqrt[NMAX * NMAX];
long long Ans;
int Count(int L1, int L2)
{
int Ans = 1;
for(int i = 1; i < L1; ++ i)
{
int Delta = L2 * L2 - 4 * i * (L1 - i);
if(Delta == 0 && L2 % 2 == 0)
{
Ans ++;
continue;
}
if(Delta <= 0 || Sqrt[Delta] == 0) continue;
int Sol1 = L2 - Sqrt[Delta], Sol2 = L2 + Sqrt[Delta];
if(2 <= Sol1 && Sol1 < 2 * L2 && Sol1 % 2 == 0) Ans ++;
if(2 <= Sol2 && Sol2 < 2 * L2 && Sol2 % 2 == 0) Ans ++;
}
return Ans;
}
int main()
{
freopen("dreptunghiuri.in", "r", stdin);
freopen("dreptunghiuri.out", "w", stdout);
for(int i = 1; i < NMAX; ++ i)
Sqrt[i * i] = i;
scanf("%i %i", &N, &M);
for(int i = 2; i <= N; ++ i)
for(int j = 2; j <= M; ++ j)
Ans += 1LL * (N - i + 1) * (M - j + 1) * Count(i - 1, j - 1);
printf("%lld\n", Ans);
}