Pagini recente » Cod sursa (job #130359) | Cod sursa (job #2850132) | Cod sursa (job #10948) | Cod sursa (job #2524772) | Cod sursa (job #2660849)
#include <fstream>
#include <string.h>
#define NMAX 170005
using namespace std;
ifstream f("dreptunghiuri.in");
ofstream g("dreptunghiuri.out");
int n, m;
int radacina[NMAX];
long long int answer;
int main()
{
f >> n >> m;
memset(radacina, -1, sizeof(radacina));
for(int i = 0; i <= m; i++)
radacina[i * i] = i;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
int drept = 1;
for(int punct = 1; punct < i; punct++)
{
int c = punct * i - punct * punct;
int delta = j * j - 4 * c;
if(delta >= 0 && radacina[delta] >= 0)
{
int x1 = radacina[delta] + j;
int x2 = j - radacina[delta];
if(x1 % 2 == 0 && x1 / 2 > 0 && x1 / 2 < j)
drept++;
if(delta > 0 && x2 % 2 == 0 && x2 / 2 > 0 && x2 / 2 < j)
drept++;
}
}
answer = answer + 1ll * (n - i) * (m - j) * drept;
}
}
g << answer;
return 0;
}