Pagini recente » Cod sursa (job #732936) | Cod sursa (job #2445870) | Cod sursa (job #2960641) | Cod sursa (job #2384369) | Cod sursa (job #1083450)
#include <fstream>
#include <cmath>
#define e 0.000001
using namespace std;
ifstream fin("dreptunghiuri.in");
ofstream fout("dreptunghiuri.out");
int SQRT[1600000];
int ans[401][401];
int n,m,sum;
long long total;
int quadratic_eq (int x, int X, int Y)
{
int sum = 0;
int wh = 4*x*x - 4*X*x + Y*Y;
if (wh < 0 || !SQRT[wh])
return 0;
if (SQRT[wh])
{
if (!((Y+SQRT[wh])&1))
++sum;
if (!((Y-SQRT[wh])&1))
++sum;
}
else
{
if (!(Y&1))
++sum;
}
return sum;
}
int main()
{
fin>>n>>m;
for (int i=1; i<=n || i<=m; ++i)
{
SQRT[i*i] = i;
}
for (int X=1; X<n; ++X)
for (int Y=1; Y<m; ++Y)
{
if (ans[X][Y]!=0)
{
total += ans[X][Y];
continue;
}
for (int x=1; x <= X/2; ++x)
{
ans[X][Y] += quadratic_eq (x,X,Y);
}
ans[X][Y] = ans[X][Y]*2 +1;
if (!(X&1))
{
ans[X][Y] -= quadratic_eq(X/2,X,Y);
}
ans[X][Y] = (n-X)*(m-Y)*ans[X][Y];
total += ans[X][Y];
}
fout<<total;
}