Cod sursa(job #338645)
Utilizator | Data | 6 august 2009 13:07:05 | |
---|---|---|---|
Problema | Dreptunghiuri | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.66 kb |
#include <stdio.h>
#include <math.h>
using namespace std;
long n, m, i, j, k, w, h, a, b, c, x, d, sol, nr, rad, tot;
int main()
{
freopen("dreptunghiuri.in", "r", stdin);
freopen("dreptunghiuri.out", "w", stdout);
scanf("%d%d", &n, &m);
n--;
m--;
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
nr=1;
for(k=1; k<j; k++)
{
a=1;
b=-i;
c=a*(j-a);
d=b*b-4*a*c;
if(d<0) continue;
if(d==0 && (-b%(2*a))==0)
{
sol=-b/(2*a);
if(sol>=0 && sol<=i)
{
nr++;
}
}
else
{
rad=sqrt(d);
if(rad*rad==d)
{
if((-b+rad)%(2*a)==0)
{
sol=(-b+rad)/(2*a);
if(sol>=0 && sol<=i)
{
nr++;
}
}
if((-b-rad)%(2*a)==0)
{
sol=(-b-rad)/(2*a);
if(sol>=0 && sol<=i)
{
nr++;
}
}
}
}
}
tot+=nr*(n-i+1)*(m-j+1);
}
}
printf("%d\n", tot);
return 0;
}