Pagini recente » Cod sursa (job #1451538) | Cod sursa (job #105581) | Cod sursa (job #1995644) | Cod sursa (job #1181597) | Cod sursa (job #1361888)
#include <fstream>
#define nmax 405
#define maxrad 800000
using namespace std;
ifstream f("dreptunghiuri.in");
ofstream g("dreptunghiuri.out");
int patrat[nmax+5],radical[maxrad+5],ok[maxrad+5];
long long tot=0;
int n,m,sol;
int precalcul(int l,int c)
{
int nr=0;
int i,d,p;
for (i=1;i<c;i++) {
d=patrat[l]- 4*c*i+ patrat[i]*4;
if (d<0)
continue;
if (ok[d]==1) {
if (d>0) {
if ((l+radical[d])%2==0)
nr+=2;
} else
if (d==0)
if (l%2==0)
nr++;
}
}
return nr+1;
}
int main()
{
int i,j;
for (i=0;i<nmax;i++)
patrat[i]=i*i;
for (i=0;i*i<maxrad;i++) {
ok[i*i]=1;
radical[i*i]=i;
}
f>>n>>m;
n--;m--;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++) {
sol=precalcul(i,j);
tot+=1LL*sol * (n-i+1) * (m-j+1);
}
g<<tot;
// 25382614616
return 0;
}