Pagini recente » Borderou de evaluare (job #1774013) | Borderou de evaluare (job #1539178) | Borderou de evaluare (job #1539360) | Cod sursa (job #3161734) | Cod sursa (job #1045006)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int n,m,my[200000],z,Sk,Mi,Pl;
unsigned long long S=0;
ifstream f("dreptunghiuri.in");
f>>n>>m;
f.close();
n--;m--;
for(int i=1; i<=n || i<=m; ++i)
my[i*i]=i;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
{
Sk=0;
for(int k=0;k<i;++k)
{
int a=-j , b=k*(i-k);
z=a*a-4*b;
if(z<0 ||(z && !my[z]))
continue;
z=my[z];
if (((-a+z)%2!=0))
continue;
Mi=(z+1)/2*(-1);
Pl=(z-1)/2;
if(0<=Mi && Mi<j)
Sk++;
if(0<=Mi && Pl<j && Mi!=Pl)
Sk++;
}
S+=(n-i+1)*(m-j+1)*Sk;
}
n++;m++;
S+=n*m*(n-1)*(m-1)/4;
ofstream g("dreptunghiuri.out");
g<<S;
g.close();
return 0;
}