Pagini recente » Cod sursa (job #2909499) | Cod sursa (job #2698606) | Cod sursa (job #1203157) | Cod sursa (job #521111) | Cod sursa (job #1150379)
#include <fstream>
using namespace std;
const int NMax = 410, MMax = 410;
int n, m;
long long ans;
int rad[NMax * NMax];
inline long long Solve(const int &H, const int &W)
{
long long ret = 1;
for (int A = 1; A < H; ++ A)
{
int delta = W * W - 4 * 1 * A * (H - A) ;
if (delta == 0)
{
int C = W / 2;
if ((W & 1) == 0 && 1 <= C && C <= W)
++ret;
}
if (delta < 0 || rad[delta] == 0)
continue;
int C1 = (W + rad[delta]) / 2;
int C2 = (W - rad[delta]) / 2;
if (((W + rad[delta]) & 1) == 0)
{
if (1 <= C1 && C1 <= W)
++ret;
if (1 <= C2 && C2 <= W)
++ret;
}
}
return ret;
}
int main()
{
ifstream f("dreptunghiuri.in");
f>>n>>m;
for (int i = 1; i <= m; ++ i)
rad[i * i] = i;
f.close();
for (int i = 2; i <= n; ++ i)
for (int j = 2; j <= m; ++ j)
ans += Solve(i - 1, j - 1) * (n - i + 1) * (m - j + 1);
ofstream g("dreptunghiuri.out");
g<<ans<<"\n";
g.close();
return 0;
}